首頁 >後端開發 >C++ >如何防止 Entity Framework 4.1 中出現「實體物件不能被 IEntityChangeTracker 的多個實例引用」異常?

如何防止 Entity Framework 4.1 中出現「實體物件不能被 IEntityChangeTracker 的多個實例引用」異常?

Barbara Streisand
Barbara Streisand原創
2025-01-08 21:16:49755瀏覽

How Can I Prevent

防止實體框架 4.1 中的實體引用衝突

實體框架可能會拋出「實體物件無法被 IEntityChangeTracker 的多個實例引用」例外。當不同的上下文嘗試同時管理同一實體時,就會發生這種情況。 當保存具有從單獨上下文載入的相關物件的實體時,通常會發生這種情況。

問題:

想像一下單獨的服務,例如 EmployeeServiceCityService,每個服務都建立自己的實體框架上下文。如果 CityService 加載一個城市,並且 EmployeeService 隨後將同一城市添加給員工,則會出現衝突,因為該城市由兩個不同的上下文追蹤。

解:

關鍵是使用單一的共享上下文。 將此上下文注入兩個服務:

<code class="language-csharp">var context = new YourDbContext(); // Create the context once
EmployeeService es = new EmployeeService(context);
CityService cs = new CityService(context); // Both services use the same context</code>

更優雅的解決方案可能是將相關實體合併到單一服務中。例如,建立 EmployeeService,而不是 CityServiceEmployeeCityService。這簡化了上下文管理並防止衝突。

以上是如何防止 Entity Framework 4.1 中出現「實體物件不能被 IEntityChangeTracker 的多個實例引用」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn