2 つのエンティティ:A *<-->* B
多対多の関係と対応する 3 つのテーブル:を持つA, B, AB
。
次のコードを試してください:
var tempA = this.dbContext.A.
.Where(a => a.UID == 1)
.FirstOrDefault();
// {check for null here}
tempA.B.Clear();
this.dbContext.SaveChanges();
データベースへの複数の「削除」SQL呼び出し、コレクション内のfor-eachを生成するようですb
(tempA.B
何かを見逃さない限り、やや奇妙です)。
したがって、これらの 2 つのレコード = { (1,2) , (1,3) } を持つ AB テーブルがある場合、上記のコードは 2 つの「削除」SQL 呼び出しを生成します (1 つは b=2 用、もう 1 つは b=3 用)。このようなもの:
1. DELETE FROM AB WHERE (A_UID = 1) AND (B_UID = 2)
and
2. DELETE FROM AB WHERE (A_UID = 1) AND (B_UID = 3)
しかし、以下のような単純なものを生成できる EF コードが必要ですか?
DELETE FROM AB WHERE (A_UID = 1)
編集: EF がすべての内部参照を解析し、それらのすべてに対して 1 つの削除ではなく、それぞれに対して 1 つの削除を生成する理由がわかりません。