实体框架数据加载策略比较

本文关键字:策略 比较 加载 数据 框架 实体 | 更新日期: 2023-09-27 18:34:42

我正在阅读这本书Programming Entity Framework: DbContext,我刚刚阅读了关于三种数据加载类型的章节:

  • 延迟加载(默认(
  • 急切加载
  • 显式加载

现在我问自己哪种数据加载在哪种情况下更好。具体的比较会很好!我还没有找到。

例如,我在客户端的模块上使用默认延迟加载。本模块处理销售代表,并暗示以下相关表:

  • 代表
  • Reps_Zones
  • Reps_Prerequisites
  • 用户
  • Reps_Languages
  • 等。

在模块上,我使用所有这些表来调度约会(一次大约 150 个约会到 50 个代表(,但它很慢。使用不同的加载策略真的会提高性能吗?

实体框架数据加载策略比较

延迟加载似乎最适合没有单独数据层的小型应用程序。一旦应用程序增长并开始将其分成单独的层,延迟加载就变得不那么有用了。当数据到达 UI 层时,DBcontext 早已被销毁,当您在数据层内时,指定要加载的属性并不是什么大问题。

延迟加载被

关闭以进行验证,因此如果属性被标记为必需并且您只加载了父属性,则始终会抛出错误,这非常令人沮丧。

延迟加载也使调试变得相当棘手,因为查询在使用之前不会执行,因此您无法轻松检查查询结果。我通常会添加 ToList(( 或类似的 EF 查询,以便我可以轻松检查结果。