gpt4 book ai didi

带有 Entity Framework 4 的 ASP.NET MVC2 - 存储库中的 AsEnumerable() 或 ToList()?

转载 作者:行者123 更新时间:2023-12-03 20:40:07 24 4
gpt4 key购买 nike

因此,我多次被建议在使用上述框架构建应用程序时禁用延迟加载,并且 ToList() 将强制执行我的存储库中的查询。有人告诉我,如果我使用 AsEnumerable(),我会避免可能遇到的某些“陷阱”。

然而,在最近的一个问题上,我在我的代码示例中包含了一堆 ToList() ,这让很多人感到震惊,他们向我保证 IEnumerable 返回要好得多。

我现在彻底糊涂了,至少可以这么说。

我应该在我的存储库中返回 IEnumerable,然后在我的 View 模型中将它们转换为 List 吗?我应该像以前一样在我的存储库中直接使用 ToList() 吗?我是否应该首先启用延迟执行?

吉米尼圣诞...

编辑:
因此,根据之前的建议,我禁用了延迟加载,然后我是否应该重新启用它,从我的存储库返回 IEnumerable/IQueryable,并在需要时将集合转换为我的 View 模型中的列表?

下面的答案之一将 IEnumerable 与急切执行相关联,而我的印象是只有 ToList() 会强制立即执行查询。

我偶然发现 this , this , 和 this所有这些都包含一些与这个问题相关的有趣讨论。

最佳答案

调用 ToList() ,返回 IEnumerable在您的存储库中,如果:

  • 您想控制提供给消费者的输出集(即您不希望他们对其运行查询),以及
  • 你不介意急切地执行。

  • 返回 IQueryable , 或 IEnumerable通过 AsEnumerable() , 在您的存储库中,如果:
  • 您不介意您的消费者在输出集上运行查询,并且
  • 你想要延迟执行。

  • 另请参阅
    http://thinkbeforecoding.com/post/2009/01/19/Repositories-and-IQueryable-the-paging-case

    关于带有 Entity Framework 4 的 ASP.NET MVC2 - 存储库中的 AsEnumerable() 或 ToList()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775351/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com