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

时间:2012-05-19 03:18:48

标签: c# entity-framework lazy-loading entity-framework-4.3

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

  • 延迟加载(默认)
  • 急切加载
  • 明确加载

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

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

  • 重复次数
  • Reps_Zones
  • Reps_Prerequisites
  • 用户
  • Reps_Languages

在模块上,我使用所有这些表来发送约会(大约150次约会,每次50次),但速度很慢。使用不同的加载策略真的会改善性能吗?

1 个答案:

答案 0 :(得分:2)

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

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

延迟加载也使得调试相当棘手,因为查询未执行直到使用它,因此您无法轻松检查查询结果。我通常添加一个ToList()或类似于我的EF查询,所以我可以轻松地检查结果。