2012-04-25 94 views
0

我的控制器中有几个操作返回IE实例的IEnumerable。ASP.NET MVC,EF:使操作方法返回List而不是IEnumerable

我正在考虑让这些actionmethods返回一个列表,而不是在传递给视图之前调用一个model.ToList()。

有两个原因,我想在这样做:

  • 首先,我测量的BaseController类actionmethods的每一个(onactionexecuted/onactionexecuting)的表现,如果我回一个IEnumerable,那么只有在onactionexecuted方法之后才会执行查询。其次,我打算在OnActionExecuted内部处理由我的“服务层”使用的连接,但是如果我将它们放置在那里,视图将无法检索模型的bc。

我的问题是,这样做有什么缺点吗? 我非常确定每个IEnumerable模型都将被完全遍历,所以它不会成为检索不会被使用的数据的问题。

感谢您的帮助。

+0

在将数据交给您的视图之前,确实应确保您的查询已实现(已执行)。调用'ToList()'是一种方法。 – 2012-04-25 16:04:52

回答

2

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

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

+0

假设List将在分页后返回,所以每个部分<100个项目都可以正常工作。 – st78 2012-04-25 16:16:37

相关问题