0

我的控制器中有几个操作返回 EF 实体的 IEnumerable。

我正在考虑让这些操作方法返回一个列表(只是在将它传递回视图之前调用一个 model.ToList() )。

我考虑这样做的原因有两个:

  • 首先,我正在测量 BaseController 类(onactionexecuted/onactionexecuting)中每个 actionmethods 的性能,如果我返回一个 IEnumerable,那么直到 onactionexecuted 方法之后才会执行查询。
  • 其次,我计划在 OnActionExecuted 中处理我的“服务层”使用的连接,但是如果我在那里处理它们,视图会因未检索到模型而失败。

我的问题是,这样做有什么缺点吗?我很确定每个 IEnumerable 模型都将被完全遍历,因此检索不会使用的数据不会有问题。

谢谢你的帮助。

4

1 回答 1

2

这是做 IMO 完全有效的事情。您几乎已经指出了利弊。主要区别在于 .ToList 一次性加载到内存中,而另一个允许按需加载。

如果您打算加载整个枚举,那么调用 .ToList 将通过一次请求而不是一次请求所有内容来节省带宽。所以,如果这听起来像是一条更好的道路。

于 2012-04-25T16:09:31.083 回答