因此,我建议几次禁用惰性加载时构建应用程序与上述框架,并且ToList()将强制执行我的存储库中的查询。我被告知如果使用AsEnumerable(),我会避免使用某些“陷阱”。然而,在最近的一个问题中,我在我的代码示例中包含了一堆ToList(),并且让很多人确信IEnumerable返回的结果要好得多。ASP.NET MVC2与实体框架4 - 存储库中的AsEnumerable()或ToList()?
我现在彻底困惑,至少可以说。
我应该在我的存储库中返回IEnumerable,然后将它们转换为我的视图模型中的List?我是否应该像以前一样在存储库中直接使用ToList()?我是否想要首先启用延迟执行?
吉米尼圣诞...
编辑: 所以,是,我禁用延迟加载,基于前面的建议,我应该再重新启用它,从我的仓库返回的IEnumerable/IQueryable的,并转换在我的视图模型中收集到一个List,如果需要?
下面的答案之一将IEnumerable与急切的执行联系起来,而我的印象是只有ToList()会强制立即执行查询。
我偶然发现了this,this和this,这些都包含了一些与这个问题有关的有趣讨论。
我想我的问题的一部分,包括我是否应该被强制执行的渴望与框架的给定组合,如一些人所建议。 – asfsadf 2010-09-23 04:09:34
除了我已经提到的因素之外,强制急切的执行可能实际上会导致性能问题;即使消费者实际上并不需要所有数据,整个数据集也会一次返回。 – 2010-09-23 04:11:51
有趣的文章。谢谢。 – asfsadf 2010-09-23 04:13:11