.net 为什么RelationshipManager.GetRelatedReference<;T>;(,)始终返回实体引用<;T>;有空值吗?
由于某些原因,导航属性在我的实体框架模型上不起作用.net 为什么RelationshipManager.GetRelatedReference<;T>;(,)始终返回实体引用<;T>;有空值吗?,.net,entity-framework,entity-framework-4,.net,Entity Framework,Entity Framework 4,由于某些原因,导航属性在我的实体框架模型上不起作用 从方向N->1,每次尝试获取EntityReference时,它都会出现空值,即使EntityKey是正确的 从方向1->N,集合始终为空 这种行为在我的整个模型中都是一致的 无论原因是什么,我认为它应该引发一个异常,即静默检索不一致的引用 引用带有空值的可能原因是什么 编辑 我只是注意到它与延迟加载有关。EntityReference(T)将IsLoaded属性设置为false,而Load方法的显式调用解决了这个问题。问题是在访问导航属性时调
从方向N->1
,每次尝试获取EntityReference时,它都会出现空值,即使EntityKey是正确的
从方向1->N
,集合始终为空
这种行为在我的整个模型中都是一致的
无论原因是什么,我认为它应该引发一个异常,即静默检索不一致的引用
引用带有空值的可能原因是什么
编辑
我只是注意到它与延迟加载有关。EntityReference(T)将IsLoaded属性设置为false,而Load方法的显式调用解决了这个问题。问题是在访问导航属性时调用的方法
RelationshipManager.GetRelatedReference
应该加载EntityReference。应该是吗?这个问题是因为LazyLoadingEnabled
属性的含义
乍一看,LazyLoadingEnabled
=false似乎意味着在加载对象时EF将加载对象关系,当然有一些限制以防止EF加载整个数据库。实际上,这意味着关系将永远不会被默认加载。也就是说:从方向N->1
,返回的EntityReference(T)
将有一个正确的EntityKey
,但是IsLoaded
将为false,并且值将为null。另一方面,在方向1->N
中,集合将为空,IsLoaded
将为false。可以使用Load
方法显式加载EntityReference
或EntityCollection
lazyloadingabled
=true,另一方面,意味着它似乎意味着。将根据需要加载关联
默认值为false,这引发了我所经历的所有困惑
为了避免混淆,可能应该有一个名为LoadingMode
的属性,它是一个具有有意义值的枚举。比如:None
,Lazy
,Eager