我現在用的是實體框架(EF)和正在以下錯誤列舉:查詢的結果不能超過一次
"The result of a query cannot be enumerated more than once.".
我有一個包含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循環,但後來我得到一個錯誤說:
An exception of type 'System.InvalidOperationException' occurred in System.Data.Entity.dll but was not handled in user code
Additional information: The result of a query cannot be enumerated more than once.
我的實體使用現有的存儲過程的函數導入。
// 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);
}
功能導入Search
調用存儲precedure返回的SearchItem
的集合。
我有一種感覺,foreach循環無法迭代,因爲與ef的東西。
你錯過了一個.ToList(),我只是看不到在哪裏...我會抓一杯咖啡,再看一看 – Smudge202 2011-04-19 22:45:24