gpt4 book ai didi

c# - EF 不会延迟加载 View

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:10 24 4
gpt4 key购买 nike

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

它应该延迟加载查询,但它没有。跟风景有关系吗?我正在使用 EntityFramework.4.3.1。

最佳答案

我不认为 HasValue 被 LINQ to Entities 识别,因为没有办法将其转换为 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

第朱莉

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com