我知道在EF7 Github回购中出现了很多问题,这些问题似乎仍然存在于最新的RC2夜间版本中。
当您尝试在查询中包含关系时,问题似乎是在使用OrderBy和Take()时。我相信,根据之前在Github上提出的问题,在连接中生成的SQL是不正确的,并没有考虑OrderBy。阅读回复后,人们建议使用Skip(0).Take(x)
作为解决方法,但不幸的是,在我的方案中,这不起作用。
在我的特定场景中,我正在查询基于祖先PK的模型。因此,为了解决这个问题,我没有将PK直接传递给查询,而是将祖先模型添加到List<T>
并在查询中使用了以下代码:
之前(在包含嵌套关系时不工作):p => p.examplePK == id
之后(似乎工作):
p => myList.Select(c => c.myId).Contains(p.examplePK)
我不完全确定为什么第二个例子有效,我会感激任何可以给出的信息 - 这可能会在这里进行一些客户端评估吗?从我收集的内容来看,第二个例子将执行SQL IN语句,不是吗?
提前致谢!