2

我調用存儲過程我收到:枚舉存儲過程結果查詢的結果不能枚舉不止一次

System.InvalidOperationException:查詢的結果不能是 列舉不止一次。

我有點supprised爲ObjectResult實現的IEnumerable(不IQueryable的)。什麼是例外,後面的背景,爲什麼我要叫ToList()方法:

var result = context.ListSomething(model.SelectedDatabase).ToList(); 
ViewBag.WebGrid = new WebGrid(source: result, rowsPerPage: int.MaxValue, canSort: false, canPage: false); 

,使其工作?你能否給我提供一些解釋它的文檔(例如從Programming Entity Framework, 2nd Edition,現在我正在閱讀它,但我不記得任何可以解釋這種機制的東西)。

感謝, 帕維爾

回答

4

這是因爲ObjectResult<T>內部訪問DataReader允許無需調用ToList首先你必須再次執行存儲過程並獲得枚舉結果只有在前進唯一的出路,所以如果你想再次重複的結果,一旦新的ObjectResult<T>實例。

+0

啊,我想我記得類似的懶惰加載設置爲false,當循環時類型T對象物化...感謝提示。 – dragonfly 2011-12-21 13:43:04