实体框架数据加载策略比较
本文关键字:策略 比较 加载 数据 框架 实体 | 更新日期: 2023-09-27 18:34:42
我正在阅读这本书Programming Entity Framework: DbContext
,我刚刚阅读了关于三种数据加载类型的章节:
- 延迟加载(默认(
- 急切加载
- 显式加载
现在我问自己哪种数据加载在哪种情况下更好。具体的比较会很好!我还没有找到。
例如,我在客户端的模块上使用默认延迟加载。本模块处理销售代表,并暗示以下相关表:
- 代表
- Reps_Zones
- Reps_Prerequisites
- 用户
- Reps_Languages
- 等。
在模块上,我使用所有这些表来调度约会(一次大约 150 个约会到 50 个代表(,但它很慢。使用不同的加载策略真的会提高性能吗?
延迟加载似乎最适合没有单独数据层的小型应用程序。一旦应用程序增长并开始将其分成单独的层,延迟加载就变得不那么有用了。当数据到达 UI 层时,DBcontext 早已被销毁,当您在数据层内时,指定要加载的属性并不是什么大问题。
延迟加载被关闭以进行验证,因此如果属性被标记为必需并且您只加载了父属性,则始终会抛出错误,这非常令人沮丧。
延迟加载也使调试变得相当棘手,因为查询在使用之前不会执行,因此您无法轻松检查查询结果。我通常会添加 ToList(( 或类似的 EF 查询,以便我可以轻松检查结果。