いくつかのタイプ A、B、C、および X の間に次の関係があります。
A->B->X
|->C->X
|->X
ここで、新しい A をデータベースに追加し、それを B、C、および X の既存のインスタンスに関連付けるとします。
私がやっていることはこれです:
using (Context context = new Context())
{
context.As.Attach(A);
context.As.Add(A);
context.SaveChanges();
}
動作しているように見えますが、Attach は通常、既存のインスタンスをアタッチするために使用されるため、よくわかりません。
この代替手段は機能しません。
using (Context context = new Context())
{
context.Bs.Attach(A.B);
context.Cs.Attach(A.C);
context.As.Add(A);
context.SaveChanges();
}
この場合、X が 2 回 (ABX と ACX) 接続され、エンティティ フレームワークが例外をスローするためです。
System.InvalidOperationException:
An object with the same key already exists in the ObjectStateManager.
The ObjectStateManager cannot track multiple objects with the same key.
私のソリューションを使用するのは理にかなっていますか、それともこれを行うためのより良い方法はありますか?