2011-12-21 104 views
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