1

挿入しようとしているオブジェクトには、ナビゲーション プロパティとして親オブジェクトがあります。

オブジェクトを「追加」して挿入するとObjectStateManager、親オブジェクト(既に挿入されている)のも設定され、Added挿入されます。SQL プロファイラーで確認したため、一意のキー違反の例外が発生します。

私はこれを2つの方法で取り除きます

  1. オブジェクトを追加する前に、すべてのナビゲーション プロパティを null に設定します
  2. ObjectStateManager親オブジェクトの を に設定しますModified

しかし、これは解決策というよりもハックのようです。Entity Framework には、これに対する洗練されたソリューションが必要だと思います。

よろしくお願いします。

4

1 に答える 1

0

2 番目のアプローチは、この問題の正しい解決策です。EFを呼び出すとAddObject、オブジェクト グラフのすべてのエンティティがAdded状態でアタッチされます。グラフに既存のエンティティもある場合は、状態をUnchangedまたはに設定して、それらについて EF に通知する必要がありますModified

于 2012-07-11T08:30:27.023 に答える