2012-04-25 92 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

相關問題