Entity Framework 4.3.1 から (偶然にも、.NET 4 に対して Visual Studio 2010 でビルドされた ASP .NET MVC 3 Web アプリケーションから) この例外が発生しています。
System.InvalidOperationException: データベースへの変更は正常にコミットされましたが、オブジェクト コンテキストの更新中にエラーが発生しました。ObjectContext が矛盾した状態にある可能性があります。内部例外メッセージ: オブジェクトをオブジェクト コンテキストに追加できません。オブジェクトの EntityKey には、オブジェクトが既に別の関係に参加していることを示す ObjectStateEntry があります。
私はいくつかのグーグルを行い、これにたどり着きました(msdnで):
保存時の InvalidOperationException
その中で、Jeff Derstadt(受け入れられた回答)は次のように述べています。
次に SaveChanges を呼び出すと、コンテキストは変更を保持し、状態エントリの修正を試みます。これを行うと、一時的な EntityKey を完全な EntityKey に変換する「キーの修正」が実行されます。この場合、一時キー TKP2 は P2 のキーと等しくなります。コンテキストは、状態マネージャーのキー エントリを完全なエンティティ エントリに「昇格」させようとし、その過程でグラフを修正します。P1.Spouse = P2 であるため、P2.Spouse は P1 である必要がありますが、追加された項目があったため、P2.Spouse は既に P3 に等しく、EntityReference は複数の値を持つことはできません。
私はここで少し「汚い」方法で考えているので、私の質問はこれです...
保存変更後のオブジェクト グラフがどのように見えるかはあまり気にしないため (つまり、要求が終了したため、とにかく破棄されます)、データが挿入されました (SQL Server でそれを見ると、実際には完全に問題ありません)。デバッガーで続行した後) - Entity Framework にこの手順を実行しないように指示する方法はありますか (したがって、この例外を取得せず、おそらく少し時間も節約できます)?