3

こんにちは私はObjectContextManagerで複数のオブジェクトをアタッチし、それらの状態を「追加」モードに設定しようとしています。これらのオブジェクトにはいくつかのナビゲーションプロパティがあり、最初のオブジェクトをアタッチした後にオブジェクトをアタッチしようとすると、エラーが発生します

同じキーを持つオブジェクトは、ObjectStateManagerにすでに存在します。ObjectStateManagerは、同じキーを持つ複数のオブジェクトを追跡できません。

その理由は非常に明白なようですが、その解決策は何でしょうか。

親切にガイド

4

2 に答える 2

1

Attachまたはエンティティを呼び出すことによりAddObject、オブジェクトグラフ全体を実際にアタッチまたは追加します(EFはナビゲーションプロパティをトラバースし、関連するすべてのプロパティで操作を実行します)。オブジェクトグラフの一部としてすでにアタッチまたは追加されているエンティティを追加またはアタッチしようとすると、この例外が発生します。解決策は、データモデルを理解して呼び出すAddObjectAttach、ばらばらのオブジェクトグラフのみを呼び出すことです。

于 2012-07-11T08:34:30.033 に答える
0

追加/アタッチする新しいエンティティのIDをランダムなIDで初期化する必要があります(Guid.NewGuid().GetHashCode()IdタイプとしてInt32を使用する場合など)

それ以外の場合は、すべてのエンティティのデフォルトIDを0にするため、エンティティをアタッチするとObjectStateManagerが例外をスローします。

于 2012-07-11T07:07:21.760 に答える