Entity Framework 4.1 の「エンティティ オブジェクトが複数の IEntityChangeTracker インスタンスによって参照される」問題を解決します
Entity Framework 4.1 を使用してエンティティ参照を含むエンティティを保存すると、「ADO.Net Entity Framework エンティティ オブジェクトは複数の IEntityChangeTracker インスタンスから参照できません」という例外が発生する場合があります。 この例外は通常、複数の Entity Framework コンテキストが同じエンティティを管理する場合に発生します。
たとえば、コード スニペットでは、2 つのサービス クラス EmployeeService
と CityService
がそれぞれ独自のコンテキスト インスタンスを作成します。 city1
エンティティが CityService
から取得されると、それは CityService
のコンテキストにアタッチされます。その後、e1
従業員エンティティが作成され、その参照が city1
に割り当てられると、両方のエンティティが EmployeeService
のコンテキストに追加されます。
その結果、city1
が 2 つの異なるコンテキストにアタッチされ、例外が発生します。
解決策:
方法 1: 単一のコンテキストを使用する
単一のコンテキスト インスタンスを作成し、それを 2 つのサービス クラス EmployeeService
と CityService
に挿入します。
<code class="language-csharp">var context = new YourDbContext(); // 创建单例上下文 EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context); // 使用相同的上下文实例</code>
方法 2: サービスをマージ
関連するエンティティを 1 つのサービスに統合し、すべてのエンティティの対話を担当します。このアプローチにより、エンティティ間の関係の操作が簡素化されます。
上記の方法により、「エンティティ オブジェクトは複数の IEntityChangeTracker インスタンスから参照できません」という例外を回避し、エンティティ参照を含むエンティティを正常に保存できます。
以上がEntity Framework 4.1 の「IEntityChangeTracker の複数のインスタンスによって参照されるエンティティ オブジェクト」例外を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。