我想我的EntityFramework對象集內刷新數據,但我收到以下錯誤:已經有一個用此命令,必須先關閉相關聯的打開的DataReader。刷新內ObjectContext的數據在實體框架
所以我有一個ObjectContext,它返回給我一個客戶的ObjectSet。然後,我將這些客戶列入網格。下面是我的方法的代碼段:()
public class CustomerEntity : SECValidation.SECEntity
{
ObjectSet<Customer> objectCustomer;
public override void InitialiseObject()
{
objectCustomer = myObjectContext.CreateObjectSet<Customer>("Customers");
objectCustomer.MergeOption = MergeOption.OverwriteChanges;
}
public override List<T> SelectRecords<T>()
{
return (from custDetails in objectCustomer.Include("Owner_Lookup")
.Include("Business_Type_Lookup").Include("Assets").Include("Client")
select custDetails).Cast<T>().ToList();
}
public override T SelectRecordByUNID<T>(int UN_ID)
{
return (from custDetails in objectCustomer.Include("Owner_Lookup").Include("Business_Type_Lookup").Include("Assets").Include("Client")
where custDetails.UN_Customer == UN_ID
select custDetails).Cast<T>().SingleOrDefault();
}
}
所以我創造我CustomerEntity類的一個實例,並調用InitialiseObject。之後,我打電話給SelectRecords(),它爲我的網格提供結果。
我有在其上調用方法SelectRecordByUNID傳遞所選擇的行的客戶ID電網的SelectedIndex改變事件代碼。這將選擇在其他地方使用的客戶記錄。
現在,如果有人在其他地方更新數據(應用程序的另一個實例),我想刷新我的objectCustomer看到這些變化。
然而SelectRecords方法運行正常,但是當SelectRecordByUNID方法把它叫做失敗,我上面提到的錯誤。該錯誤說有一個關聯的DataReader已經用這個命令打開並關閉它。如何打開數據讀取器而不關閉數據讀取器,因爲打開了與客戶網格的數據源相關的其他數據?
我也使用myObjectContext爲不同的實體創建對象集。
我使用C#和.Net4.0
請幫助我,我希望是有道理的!?!
謝謝。
可能重複[實體框架:已經有一個用此命令相關聯的打開的DataReader(http://stackoverflow.com/questions/4867602/entity-framework - 這是一個已經開放的數據讀取器 - 與這個逗號相關聯) – 2012-02-20 15:25:14
不確定它是否誠實。我試過設置MultipleActiveResultSets = True,這沒有什麼區別。感謝您的回覆 – user1131661 2012-02-20 16:12:22
在這種情況下,您必須在您的問題中提供更多信息,因爲您可能做錯了什麼。 – 2012-02-20 16:14:22