gpt4 book ai didi

.net - 为什么 RelationshipManager.GetRelatedReference(,) 总是返回具有空值的 EntityReference

转载 作者:行者123 更新时间:2023-12-01 06:43:56 24 4
gpt4 key购买 nike

出于某种原因,导航属性不适用于我的 Entity Framework 模型。

从 N->1 方向,每次我尝试获取 EntityReference 时它都带有空值,即使 EntityKey 是正确的。

从1->N方向看,集合始终为空。

这种行为在我的整个模型中都是一致的。

无论是什么原因,我认为它应该引发异常而不是默默地检索不一致的引用。

引用带有空值的可能原因是什么?

编辑

我刚刚注意到它与延迟加载有关。 EntityReference(T) 的 IsLoaded 属性设置为 false,显式调用 Load 方法解决了这个问题。问题是访问导航属性时调用的方法 RelationshipManager.GetRelatedReference 应该加载 EntityReference。不应该吗?

最佳答案

这个问题是因为 LazyLoadingEnabled 属性的含义。

乍一看,LazyLoadingEnabled = false 似乎意味着EF会在加载对象时加载对象关系,当然有一些限制,以防止EF加载整个数据库。实际上,这意味着关系将永远不会被隐式加载。即:从方向 N->1,返回的 EntityReference(T) 将具有正确的 EntityKeyIsLoaded 将为 false,Value 将为 null。另一方面,在 direction 1->N 中,集合将为空,IsLoaded 将为 false。 EntityReferenceEntityCollection 可以使用 Load 方法显式加载。

LazyLoadingEnabled = true,反之,意思好像是这个意思。关联将在需要时加载。

默认值为 false,顺便说一句,这引发了我经历的所有这些困惑。

为了防止混淆,也许应该有一个名为 LoadingMode 的属性,它是一个具有有意义值的枚举。喜欢:NoneLazyEager

关于.net - 为什么 RelationshipManager.GetRelatedReference<T>(,) 总是返回具有空值的 EntityReference<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460203/

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