我的 Linq where 子句如何转换为 Sql 时遇到问题。
我正在使用EnumToStringConverter将我的实体的属性映射enum到文本数据库列中。当从 DbContext 查询我的实体时,这一切都很好。
然后我开始使用 LinqKit 和 Expressions 来获得可重用的过滤器。我创建了一个表达式,它接受我的实体并作为对实体其他属性的一些计算的结果给出我的枚举。我会尝试用代码来解释自己,因为文字让我失望。我会写一个例子,所以我不必发布完整的代码,但逻辑是一样的。您可以在此处找到带有项目的 GitHub 存储库来复制该问题: https //github.com/pinoy4/efcore-enum-to-string-test
模型类:
public class MyEntity
{
public Guid Id { get; set; }
public MyEnum Status { get; set; }
public DateTime DueAtDate { get; set; }
}
public MyEnum
{
New = 0,
InProgress = 1,
Overdue = 2
}
Run Code Online (Sandbox Code Playgroud)
FluentAPI 配置
public class MyEntityConfiguration : IEntityTypeConfiguration<MyEntity>
{
public void Configure(EntityTypeBuilder<MyEntity> builder)
{
// irrelevant parts of configuration …Run Code Online (Sandbox Code Playgroud) 我会说得对.
我有一个UIViewController,里面有两个子视图.最上面的一个(我们从现在开始称它为HeaderView)是一个自定义的UIView,底部的是一个UITableView.
我在InterfaceBuilder中设置它们,以便HeaderView从左侧,顶部和右侧有0个边距,另外它有一个固定的高度.UITableView直接位于下方,各方都有0个边距.
我的目标是实现一种行为,当我开始滚动UITableView的内容时,HeaderView将开始收缩,UITableView会变得更高而不滚动.这应该继续,直到HeaderView达到最小高度.之后,UITableView应该正常开始滚动.向下滚动时,效果应该相反.
我最初使用UIScrollView而不是UITableView开始这个,我已经达到了预期的效果.方法如下:
将UIScrollView连接到插座
@IBOutlet weak var scrollView: UIScrollView!
在控制器的viewDidLoad()方法中
设置UIScrollViewDelegate,self.scrollView.delegate = self
并声明UIViewController符合协议
UIScrollView滚动时的拦截:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
self.adjustScrolling(offset: scrollView.contentOffset.y, scrollView: scrollView)
}
在我的adjustScrolling(offset:scrollView:)方法中,"神奇"发生了
现在让我们来看看这种方法会发生什么.
private func adjustScrolling(offset: CGFloat, scrollView: UIScrollView) {
// bind value between 0 and max header scroll
let actualOffset: CGFloat = offset < 0 ? 0 : (offset >= self.maxHeaderScroll ? self.maxHeaderScroll : offset)
// avoid useless calculations
if (actualOffset == self.currentOffset) {
return
}
/**
* …Run Code Online (Sandbox Code Playgroud)