一尘不染

延迟加载与急切加载

c#

实体框架中的延迟加载是加载和访问相关实体时发生的默认现象。但是,急切加载是指对所有这些关系强制加载的做法。我遇到了一个问题:在什么情况下,渴望加载比延迟加载更有益。提出这个问题,因为很明显,延迟加载对资源更友好,即使我们使用该ToList()方法,我们仍然可以利用延迟加载行为。但是,我认为延迟加载可能会增加对实际数据库的请求数量,这也许就是为什么有时开发人员使用Inlcude强制加载所有关系的方法。例如,当在MVC
5中使用Visual
Studio自动脚手架时,在控制器中自动创建的Index方法始终使用“急切加载”,而我一直有一个问题,为什么Microsoft在这种情况下默认使用“急切加载”。

如果有人在什么情况下向我解释,优先加载比延迟加载更有利,以及在有比延迟加载更友好的资源的情况下,为什么我们要完全使用它,我将不胜感激。


阅读 211

收藏
2020-05-19

共1个答案

一尘不染

我认为对这样的关系进行分类很好

何时使用紧急加载

  1. 在一对多关系的“一侧”中,您确定与主要实体一起在所有地方使用。例如文章的用户属性。产品的类别属性。
  2. 通常,当关系不是太多并且渴望加载时,减少在服务器上的进一步查询将是一个好习惯。

何时使用延迟加载

  1. 一对多关系的几乎每个“集合方”。像用户文章或类别的产品
  2. 您完全知道您将不需要即时财产。

注意: 就像Transcendent所说的,延迟加载可能存在处理问题。

2020-05-19