【问题标题】:Entity Framework 5 dynamic proxy lazy loading: Does accessing null navigation property hit database everytime?Entity Framework 5 动态代理延迟加载:每次访问空导航属性都会命中数据库吗?
【发布时间】:2013-01-03 01:31:33
【问题描述】:

This 状态:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    不,不会。 DbCollectionEntry<TEntity, TElement>DbReferenceEntry<TEntity, TProperty> 中的 IsLoaded 属性用于判断是否需要加载,无论null 与否,实际值都无关紧要。

    【讨论】:

    • 谢谢!查看了 DbReferenceEntry 的文档,希望我可以将 IsLoaded 设置为 false 以强制再次命中 db,但看起来我做不到。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      相关资源
      最近更新 更多