私は Entity Framework 4.4 を使用しており、次のような 1 対多の関係モデルがあります。
class A {
public int Id { get; set; }
public virtual B { get; set; }
public int BId;
}
class B {
public Id { get; set; }
private ICollection<A> _As;
public virtual ICollection<A> As
{
get { return _As ?? (_As = new HashSet<A>()); }
protected set { _As = value; }
}
}
ここで、同じ B インスタンスを持つ 2 つの A インスタンスがあるとします。次に、次のようなものがあります(JSON表現):
A: { Id: 1, BId: 1, B: { Id: 1, As: [ 1, 2 ] } }
A: { Id: 2, BId: 1, B: { Id: 1, As: [ 1, 2 ] } }
次に、A インスタンスの現在のリストを循環し、db コンテキストに追加します。
foreach (var a in LocalAList)
{
dbContext.Add(a);
dbContext.SaveChanges();
}
問題は、重複したオブジェクトを挿入したことを知らせる例外が発生することです。私は周りを見回して、エンティティの変更と添付ファイルを扱っていることを見つけましたが、私はまだEFにかなり慣れていません。これは典型的なことであり、オブジェクトが既に存在する場合にオブジェクトの挿入を処理するためのイディオムがあると思います。
重複の追加を回避しながら、コンテキストに新しいオブジェクトを効率的に追加するにはどうすればよいですか? 重複した例外をキャプチャして無視する必要がありますか? 確認する良い方法はありますか?