ホームページ > バックエンド開発 > C++ > Entity Framework 4.1 での「IEntityChangeTracker の複数のインスタンスからエンティティ オブジェクトを参照することはできません」という例外を防ぐにはどうすればよいですか?

Entity Framework 4.1 での「IEntityChangeTracker の複数のインスタンスからエンティティ オブジェクトを参照することはできません」という例外を防ぐにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-08 21:16:49
オリジナル
750 人が閲覧しました

How Can I Prevent

Entity Framework 4.1 でのエンティティ参照の競合の防止

Entity Framework は、「エンティティ オブジェクトは IEntityChangeTracker の複数のインスタンスから参照できません」という例外をスローする場合があります。これは、異なるコンテキストが同じエンティティを同時に管理しようとすると発生します。 これは通常、別のコンテキストから読み込まれた関連オブジェクトを含むエンティティを保存するときに発生します。

問題:

それぞれが独自の Entity Framework コンテキストを作成する、EmployeeServiceCityService などの個別のサービスを想像してください。 CityService が都市をロードし、後で EmployeeService がその同じ都市を従業員に追加すると、都市は 2 つの異なるコンテキストによって追跡されるため、競合が発生します。

解決策:

重要なのは、単一の共有コンテキストを使用することです。 このコンテキストを両方のサービスに挿入します:

<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>
ログイン後にコピー

より洗練された解決策は、関連するエンティティを 1 つのサービスに統合することです。たとえば、EmployeeServiceCityService の代わりに EmployeeCityService を作成します。これにより、コンテキスト管理が簡素化され、競合が防止されます。

以上がEntity Framework 4.1 での「IEntityChangeTracker の複数のインスタンスからエンティティ オブジェクトを参照することはできません」という例外を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート