Entity Framework は、「行が存在する場合は更新、そうでない場合は新しい行を挿入」シナリオを管理するための複数のアプローチを提供します。
添付オブジェクト:
の場合変更されるエンティティはすでにコンテキストにアタッチされているため、直接更新できます:
if (context.ObjectStateManager.GetObjectStateEntry(myEntity).State == EntityState.Detached) { context.MyEntities.AddObject(myEntity); } // Attached object tracks modifications automatically context.SaveChanges();
既知のキーを持つアタッチされていないオブジェクト:
エンティティがゼロ以外のキー (既存のエントリを示す) は、次のように添付および変更できます。次のとおりです:
if (myEntity.Id != 0) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
不明なキーを持つアタッチされていないオブジェクト:
キーが不明な場合は、検索クエリを実行して存在を確認できます:
var id = myEntity.Id; if (context.MyEntities.Any(e => e.Id == id)) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
以上がEntity Framework を使用して Upsert ロジックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。