2 つのエンティティ a と b があり、それらの間の m2m 関連付けがあります。エンティティ a と b は私の DbContext に読み込まれますが、m2m associaiton は読み込まれません。さて、私のプログラムでは、a と b の主キーがわかっているので、m2m 関連付けを削除する必要があります。
もちろん、データベースから a を再ロードして、その m2m 関連付けを含めることもできます。ただし、これには、データベースからエンティティを取得するために、データベースへの追加のラウンド トリップが必要です。
最初に DbContext から a をデタッチし、次に b をその BSet に追加し、次に a を再度アタッチしてから remove を次のように呼び出すこともできます。
context.Entry(a).State = EntityState.Detached;
a.Bset.Add(b)
context.Set(typeof(A)).Attach(a);
a.BSet.Remove(b)
ただし、a をそのコンテキストから切り離してからアタッチすると、a に加えられた変更が失われます。したがって、SaveChanges() を呼び出しても、 のすべての変更がデータベースに保持されない場合があります。
私の質問は次のとおりです。データベースへの追加の往復なしで、a または b に加えられた変更を失うことなく、a と b の間の m2m 関連付けを削除するにはどうすればよいですか?
[編集: 私が探しているのは、a と b の間に既存の m2m アソシエーションをアタッチできる a.BSet.Attach メソッドです]
私は最新バージョンの Entity Framework を使用しており、DbContext を使用しています。
どんな助けでも大歓迎です。
前もって感謝します、
メリジン