c# - EF 不延迟加载 View

标签 c# linq entity-framework dbcontext entity-framework-4.3

我有一个方法可以从数据库内的 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。

这是一个有趣的想法: http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/56484ed7-9664-44f4-84a0-69da3901c817

围绕可空值的 LINQ 存在各种奇怪的行为,因此您必须真正注意结果 -> http://msdn.microsoft.com/en-us/library/bb738687.aspx

第h 朱莉

关于c# - EF 不延迟加载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257469/

相关文章:

c# - Entity Framework 性能缓慢

c# - 通过 ID 集合查询对象的 Realm

c# - 如何使用 C# 在网页的源代码中查找 div 中的文本

c# - 检查 Linq to Entity 中的 True 或 Null 值

c# - 尝试分配给 C# 'foreach iteration variable' 会生成编译时错误。在 Linq [IEnumerable].ForEach(...) 中这样做不会。为什么?

entity-framework - 如何使 c# 十进制匹配 SQL 十进制以进行 EF 更改跟踪?

c# - 是否有理由以这种方式进行类型比较?

c# - 如何将 Task.WhenAll() 用于多个不同返回类型的列表?

c# - 我如何识别我的服务的客户?

c# - 在 Entity Framework 中合并