代码之家  ›  专栏  ›  技术社区  ›  Rei Miyasaka

我应该关闭实体框架中的延迟加载吗?

  •  2
  • Rei Miyasaka  · 技术社区  · 14 年前

    1. 查询变为非原子的,因此可能导致并发错误。
    2. 我或另一个程序员可能会导致一个巨大的性能障碍。

    当然,只要我们小心,这两个问题都是可以避免的,但在性能有点重要的项目中,这似乎有点不必要的风险。

    顺便说一下,我发现1-*关系属性变成 null 无效的 .

    思想?

    1 回复  |  直到 14 年前
        1
  •  8
  •   RPM1984    14 年前

    如果担心性能,请关闭延迟加载,如果不担心,请不要。

    明确地 允许通过我们存储库的接口合同包含导航属性,例如:

    ICollection<Person> FindSingle(int personId, string[] includeAssociations);
    

    急负荷

    至于1-*,属性当然是空的。导航属性通常实现为 ICollection<T> 在对象上,因此如果没有任何内容,则不会实例化集合。

    在执行查询时,通过创建空集合而不是空集合来抵消此影响。但是,我更喜欢空集合,而不是包含0个项的实例化集合。