Rei*_*aka 2 linq-to-entities entity-framework lazy-loading
所以我一直觉得我应该关闭延迟加载,原因有两个:
当然,只要我们小心,这两个问题都可以避免,但在性能有点重要的项目中似乎有点不必要的风险.
作为旁注,我发现1-*关系属性变得很奇怪,null而不是在延迟加载时访问它们时抛出异常.我想回去并在单个查询中做所有事情,但我担心我可能忽略了一个错误,我将一个尚未加载的0-*关系解释为null.
思考?
如果您担心性能,请关闭延迟加载,如果不是,请不要.
就个人而言,我们关闭延迟加载,并明确允许通过我们的存储库的接口契约包含导航属性,例如:
ICollection<Person> FindSingle(int personId, string[] includeAssociations);
Run Code Online (Sandbox Code Playgroud)
因此,只有在调用代码专门请求导航属性时,我们才会急切加载导航属性.这就像是在对代码说:"嘿,如果你想要关于这个T的额外信息,那就请它,否则你不会得到它!".
对于1-*,当然属性为null.导航属性通常ICollection<T>在对象上实现,因此如果没有任何内容,则不会实例化集合.
您可以通过创建空集合来抵消此效果,而不是在执行查询时创建空集合.但是,我更喜欢将null集合添加到具有0个项目的实例化集合中.
| 归档时间: |
|
| 查看次数: |
2548 次 |
| 最近记录: |