.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