私は最終的にEFコードの自己参照型多対多リレーションシップの周りに頭を抱いていましたが、今では、これらの関係を更新する。 Contact.cs
クラスで次のようにEFコードファースト自己参照多対多更新リファレンス
modelBuilder.Entity<Contact>()
.HasMany(c => c.Friends)
.WithMany()
:
のは、我々はこのような関係を持っているとしましょう、私の連絡先ビューで
public virtual iCollection<Contact> Friends {get;set;};
、私は連絡先のために友達を選択する複数選択を持っています。次に、選択したすべてのものを反復して保存し、thisContact.Friends.Add(friend)
を実行して変更を保存します。
その後、連絡先ビューに戻ると、.Friends
を取得して複数選択を再投入するのは簡単ですが、新しい友だちを再保存する際に問題が発生しています。それについて最善の方法は何ですか?私は最初にすべての友達を削除してから、マルチセレクションから新しいものを追加することを考えましたが、それは効率的ではないようで、Contact
を保存することに関して、どの時点で.Friends
を削除するのか正確にはわかりませんでした。
マルチセレクションから選択した新しい項目を調べ、既にthisContact.Friends
にあるものと比較して新しいものを追加し、新しいものを追加し、そこにないものを削除して一致するアイテムを保持しますか?
これが意味をなされることを願っております、あらかじめありがとうございます!
友人を置き換えるだけではるかに簡単な方法です。非常に小さいレコードしか含まれていないので、(何百ものアイテムがない限り)高価ではありません。 –
あなたは存在する友人を削除し、新しい友達を追加することを意味しますか? – blubberbo
はい。ジャンクション・テーブル内のレコードのみが削除され、再挿入されます。連絡先は削除されません。 –