实体框架5动态代理延迟加载:每次都访问空导航属性命中数据库吗?

时间:2013-01-03 01:31:33

标签: c# entity-framework entity-framework-5

This州:

  

一旦加载了实体,对实体的任何进一步查询都将直接从对象状态管理器加载它,无论您是使用延迟加载还是预先加载。

如果我使用代理根实体的导航属性延迟加载实体,并且该可导航实体存在于数据库中,那么对该可导航实体的所有后续调用都不会导致数据库命中,因为它已经被加载。 / p>

我是否正确地假设如果我尝试使用来自根实体代理的导航属性来延迟加载实体(或集合)并且它存在于数据库中 - 并因此返回null或者是一个空集合 - 所有后续尝试从同一个根实体延迟加载同一个实体总是会导致数据库命中?

2 个答案:

答案 0 :(得分:2)

不,它不会。 IsLoadedDbCollectionEntry<TEntity, TElement>中的DbReferenceEntry<TEntity, TProperty>属性用于确定是否需要加载,实际值({1}}是否无关紧要。

答案 1 :(得分:0)

不,因为它已经加载了空/空集合值。