我有一个方法可以从数据库内的 View 获取整个数据:
public IQueryable<vw_FullWebIgnoringApprovalStatus> GetAllFullWebIgnoringApprovalStatus()
{
IQueryable<vw_FullWebIgnoringApprovalStatus> query =
Context.vw_FullWebIgnoringApprovalStatus;
return query;
}
当我执行以下方法时,它立即执行不应该执行的查询:
var model = _repo.GetAllFullWebIgnoringApprovalStatus()
.Where(x =>
(!reid.HasValue && !destid.HasValue && !coid.HasValue) ||
(reid.HasValue && x.Reid == reid.Value) ||
(destid.HasValue && x.Destid == destid.Value) ||
(coid.HasValue && x.Coid == coid.Value)
);
它应该延迟加载查询,但没有。和 View 有关系吗?我正在使用EntityFramework.4.3.1。
最佳答案
我不相信 LINQ to Entities 能够识别 HasValue,因为无法将其转换为 SQL。因此我认为在这种情况下,L2E 必须先执行查询,然后才能评估 HasValue。我以前从未见过这种特殊行为。我认为您需要找到另一种方式来表达可空性测试。我有兴趣查看 SQL。
围绕可空值的 LINQ 存在各种奇怪的行为,因此您必须真正注意结果 -> http://msdn.microsoft.com/en-us/library/bb738687.aspx
第h 朱莉
关于c# - EF 不延迟加载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257469/