【发布时间】:2011-04-19 22:35:55
【问题描述】:
我正在使用实体框架 (ef) 并收到以下错误:
“一个查询的结果不能被枚举多次。”。
我有一个包含 ef 数据上下文的存储库类。然后我有一个包含存储库实例的控制器类(不要与 MVC 控制器混淆)。到目前为止一切顺利...我在控制器上有一个搜索方法,它应该返回一个 RadComboBoxItemData 数组,用于填充 Telerik RadComboBox 控件。
public RadComboBoxItemData[] Search(int id, string searchText)
{
var query = context.Search(id, searchText);
List<RadComboBoxItemData> result = new List<RadComboBoxItemData>();
foreach (var item in query)
{
RadComboBoxItemData itemData = new RadComboBoxItemData();
itemData.Text = ""; // assign some text here..;
itemData.Value = ""; /*assign some value here..*/
result.Add(itemData);
}
return result.ToArray();
}
当我调试我的代码时,我可以进入 foreach 循环,但随后我收到一条错误消息:
类型异常 'System.InvalidOperationException' 发生在 System.Data.Entity.dll 但 未在用户代码中处理
附加信息:结果 一个查询不能枚举超过 一次。
我的实体使用现有存储过程的函数导入。
// EF repository method calling the function imported method on the data context.
public IEnumerable<SearchItem> Search(int id, string searchText)
{
return this.entityContext.Search(id, searchText);
}
函数 import Search 调用存储的过程以返回 SearchItem 的集合。
我感觉 foreach 循环由于 ef 的某些问题而无法迭代。
【问题讨论】:
-
你缺少一个 .ToList(),我只是看不到在哪里...我去喝杯咖啡再看看
标签: c# asp.net linq entity-framework entity-framework-4