gpt4 book ai didi

entity-framework - 我应该关闭 Entity Framework 中的延迟加载吗?

转载 作者:行者123 更新时间:2023-12-04 08:29:03 26 4
gpt4 key购买 nike

所以我一直觉得我应该关闭延迟加载,原因有两个:

  1. 查询变为非原子查询,因此可能导致并发错误。
  2. 我或其他程序员最终可能会造成巨大的性能障碍。

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

作为旁注,我发现 1-* 关系属性变为 null 而不是在延迟加载关闭时访问它们时抛出异常很奇怪。我想返回并在单个查询中执行所有操作,但我担心我可能会忽略一个错误,在该错误中我将尚未加载的 0-* 关系解释为 null

想法?

最佳答案

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

就个人而言,我们关闭了延迟加载,并且明确允许通过我们存储库的接口(interface)契约包含导航属性,例如:

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

因此,只有在调用代码明确要求时,我们才会急于加载导航属性。这就像对代码说:“嘿,如果你想要关于这个 T 的额外信息,那就去问吧,否则你得不到它!”。

至于1-*,属性当然是null。导航属性通常实现为 ICollection<T>在对象上,因此如果那里什么都没有,则不会实例化集合。

可以在执行查询时通过创建一个空集合而不是空集合来抵消这种影响。但是,与具有 0 个项目的实例化集合相比,我更喜欢空集合。

关于entity-framework - 我应该关闭 Entity Framework 中的延迟加载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com