私が DbContext を特にひどく使用している可能性は十分にありますが、グラフのすべての要素が新しいわけではない、添付されていないオブジェクト グラフを保存しようとしている状況に陥ってしまいました。たとえば、次のような POCO エンティティがあります。
var item = new MyClass();
item.RelationshipOne = myExistingItem; //loaded by some other mechanism
item.RelationshipTwo = new MyOtherClass();
現在、挿入または更新メソッドには、次のようなコードが含まれています。
using (var context = new MyContext())
{
context.Entry(item).State = item.ID == 0 ? EntityState.Added : EntityState.Modified;
context.SaveChanges();
}
myExistingItem
しかし、ルート状態が何であれ状態を設定するため、これは失敗しますitem
(そのため、SaveChanges を呼び出すと、データベース内の既存のアイテムを再作成しようとし、主キー違反エラーがスローされます)。
変更や既存のオブジェクトを自動的に検出するためにできることはありますか、それともオブジェクト グラフを自分で調べるコードを書く必要がありますか?