Entity Framework では、既存の行の更新または新しい行の挿入のシナリオをさまざまなアプローチで効率的に処理できます。 .
1.オブジェクト状態の使用:
更新するエンティティがコンテキストにアタッチされており、その状態が Detached の場合は、context.MyEntities.AddObject(myEntity) を使用して追加できます。添付されたオブジェクトは自動的に変更を追跡し、context.SaveChanges().
2 を呼び出すと変更をデータベースに保存します。エンティティ キーの使用:
エンティティのキーがわかっている場合は、そのキーを使用してエンティティが存在するかどうかを判断できます。キーがゼロ以外の場合、エンティティは context.MyEntities.Attach(myEntity) を使用してアタッチでき、その状態は Modified:
if (myEntity.Id != 0) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); }
3 に変更されます。ルックアップ クエリの使用:
エンティティのキーが利用できない場合は、ルックアップ クエリを実行してその存在を確認できます:
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); }
これらのアプローチは効率的で柔軟です。 Entity Framework で「行が存在する場合は更新、そうでない場合は新しい行を挿入」ロジックを実装する方法。方法の選択は、エンティティのキーの可用性とアプリケーションの特定のコンテキストに依存する場合があります。
以上がEntity Framework で行を更新または挿入する方法: Upsert ロジックの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。