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