在什么情况下,贪婪加载可能比惰性加载更有利?
在 Entity Framework 中,惰性加载是默认的加载和访问相关实体的现象。然而,贪婪加载是指强制加载所有这些关系的实践。
我之所以问这个问题,是因为显然惰性加载更节省资源,即使我们使用 ToList()
方法,也可以利用惰性加载行为的优势。
但是,我认为惰性加载会增加实际数据库请求的数量,也许这就是开发人员有时使用 Inlcude
方法来强制加载所有关系的原因。
例如,在 MVC 5 中使用 Visual Studio 自动叉车,控制器中自动创建的 Index 方法总是使用贪婪加载,这一点我一直不明白为什么 Microsoft 在那种情况下默认使用贪婪加载。
如果有人能解释在什么情况下贪婪加载比惰性加载更有优势,并且为什么我们在有比惰性加载更节省资源的东西存在时仍要使用它,我将不胜感激。