3

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

  • 延迟加载(默认)
  • 渴望加载
  • 显式加载

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

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

  • 代表
  • 代表区
  • 代表_先决条件
  • 用户
  • Reps_Languages
  • 等等

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

4

1 回答 1

2

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

延迟加载被关闭以进行验证,因此如果一个属性被标记为必需并且您只加载了父级,那么总是会抛出一个非常令人沮丧的错误。

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

于 2012-05-19T08:17:37.793 回答