gpt4 book ai didi

c# - 为什么禁用延迟加载会导致相关表没有结果?

转载 作者:行者123 更新时间:2023-12-04 00:32:43 25 4
gpt4 key购买 nike

给定:

        public SomeEntity Read(int primaryKey)
{
SomeEntity myEntity;
using (var context = new MyEntities2())
{
context.Configuration.LazyLoadingEnabled = false;//This line is wacky
myEntity = context.SomeEntities.SingleOrDefault(ct => ct.PrimaryKey == primaryKey);
if (myEntity == null)
return myEntity;

//Force eager Load...
var bypassDeferredExecution = myEntity.RelatedTable1.ToList();
var bypassDeferredExecution2 = myEntity.RelatedTable2.ToList();
}
return myEntity;
}

如果我设置 LazyLoadingEnabled = false,则 myEntity.RelatedTable1.Count == 0
保留默认值 LazyLoadingEnabled = true 然后 myEntity.RelatedTable1.Count == 2。

我的理解是 Lazy Loading 和 Eager Loading 是截然相反的。我强制急切加载。无论我是否使用延迟加载,我都希望我的相关表(交叉引用表)有 2 个结果。所以在我看来,这些结果毫无意义。

为什么延迟加载会影响我的结果?

最佳答案

你必须使用 Include 来预先加载相关实体:

myEntity = context.SomeEntities
.Include("RelatedTable1")
.Include("RelatedTable2")
.SingleOrDefault(ct => ct.PrimaryKey == primaryKey);

Lazy Loading 设置为 false 不会使其自动发生。

关于c# - 为什么禁用延迟加载会导致相关表没有结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18471819/

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