ホームページ >バックエンド開発 >C++ >Entity Framework 4.1 の「エンティティ オブジェクトは IEntityChangeTracker の複数のインスタンスから参照できません」を解決する方法は?

Entity Framework 4.1 の「エンティティ オブジェクトは IEntityChangeTracker の複数のインスタンスから参照できません」を解決する方法は?

DDD
DDDオリジナル
2025-01-08 21:22:55557ブラウズ

How to Resolve

Entity Framework 4.1 でのエンティティ オブジェクト参照の競合のトラブルシューティング

Entity Framework 4.1 で Employee エンティティにリンクされた City エンティティを保存すると、「エンティティ オブジェクトは IEntityChangeTracker の複数のインスタンスによって参照できません。」という例外がスローされる場合があります。これは通常、関連エンティティを追加するときに発生します。

この問題は、EmployeeService クラスと CityService クラスがコンテキストを管理する方法に起因します。 payrollDAO.AddToEmployee(e1); 内の EmployeeService 行が原因です。 ここで、e1 (Employee エンティティ) は、city1 (リンクされた City エンティティ) への参照をすでに保持しているコンテキストに追加されます。エンティティを複数のコンテキストに同時にアタッチできないため、競合が発生します。

解決策は、両方のサービスが同じコンテキストを共有するようにすることです。 これは 2 つの方法で実行できます:

1.依存関係の注入: コンテキストをサービス コンストラクターに注入:

<code class="language-csharp">EmployeeService es = new EmployeeService(context);
CityService cs = new CityService(context);</code>

これにより、両方のサービスが同じコンテキスト内で動作することが保証され、競合が防止されます。

2.統合サービス: EmployeeCityServiceEmployee エンティティの両方を管理する単一のサービス (たとえば、City) を作成します。この単一のサービスは単一のコンテキストを使用するため、コンテキストの衝突の可能性が排除されます。 このアプローチにより、データの整合性が向上し、コンテキスト管理が簡素化されます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。