解決 Entity Framework 4.1 中「實體物件被多個 IEntityChangeTracker 實例引用」的問題
使用 Entity Framework 4.1 儲存包含實體所引用的實體時,可能會遇到例外「ADO.Net Entity Framework 實體物件不能被多個 IEntityChangeTracker 實例引用」。 此例外通常發生在多個 Entity Framework 上下文管理相同實體時。
例如,在程式碼片段中,EmployeeService
和 CityService
兩個服務類別分別建立了各自的上下文實例。當 city1
實體從 CityService
檢索時,它被附加到 CityService
的上下文。隨後,當建立 e1
員工實體並將其引用指派給 city1
時,這兩個實體都會被加入到 EmployeeService
的上下文中。
結果,city1
被附加到兩個不同的上下文中,從而導致異常。
解決方法:
方法一:使用單一上下文
建立單一上下文實例,並將其註入 EmployeeService
和 CityService
兩個服務類別:
<code class="language-csharp">var context = new YourDbContext(); // 创建单例上下文 EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context); // 使用相同的上下文实例</code>
方法二:合併服務
將相關的實體合併到單一服務中,由該服務負責所有實體互動。這種方法簡化了實體之間關係的運作。
透過上述方法,您可以避免「實體物件不能被多個 IEntityChangeTracker 實例引用」的異常,並成功保存包含實體參考的實體。
以上是如何解決 Entity Framework 4.1 中的「IEntityChangeTracker 的多個實例引用實體物件」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!