【发布时间】:2015-09-30 16:56:51
【问题描述】:
在什么情况下急切加载比延迟加载更有利?
实体框架中的延迟加载是加载和访问相关实体时发生的默认现象。然而,急切加载是指强制加载所有这些关系的做法。
我问这个,因为很明显延迟加载对资源更友好,即使我们使用ToList()方法,我们仍然可以利用延迟加载行为。
但是,我认为延迟加载可能会增加对实际数据库的请求数量,这可能就是开发人员有时使用Inlcude 方法强制加载所有关系的原因。
例如,当在 MVC 5 中使用 Visual Studio 自动脚手架时,控制器中自动创建的 Index 方法总是使用 Eager Loading,而我一直有一个疑问,为什么微软在这种情况下默认使用 Eager Loading。
如果有人向我解释在什么情况下急切加载会比延迟加载更有益,我将不胜感激,以及为什么我们要使用它,而有一些比延迟加载更资源友好的东西?
【问题讨论】:
-
想象一下您的数据库上下文将被释放并且延迟加载不再发生的情况。然后急切加载是有益的。
-
我看到很多项目因为“N + 1 Select”问题导致性能问题而失败,这在延迟加载时会发生得更快,所以一定要查一下
标签: c# entity-framework entity-framework-6