Entity Framework を使用して既存のレコードを更新または新しいレコードを挿入する
データベースを操作する場合、多くの場合、更新が確実に実行されるようにする必要があります。既存の行が挿入されるか、存在しない場合は新しい行が挿入されます。これは、「存在する場合は更新、そうでない場合は新しい行を挿入」ロジックによって実現できます。 Entity Framework (EF) では、このロジックを効率的に実装するためのいくつかのアプローチがあります。
1.添付オブジェクトの使用
添付オブジェクト (同じコンテキスト インスタンスからロードされたオブジェクト) の場合、コードは次のように簡略化できます。
if (context.ObjectStateManager.GetObjectStateEntry(myEntity).State == EntityState.Detached) { context.MyEntities.AddObject(myEntity); } // Attached object tracks modifications automatically context.SaveChanges();
2.オブジェクト ID ナレッジの使用
オブジェクトのキーがわかっている場合 (ID など)、コードでは IF ステートメントを使用できます:
if (myEntity.Id != 0) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
3。ルックアップ クエリの使用
オブジェクトの存在を ID から判断できない場合は、ルックアップ クエリを実行できます。
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 を使用して新しい行を挿入する」ロジックを使用し、データベースが更新されるか、必要に応じて新しいレコードが追加されるようにします。
以上がEntity Framework でレコードを効率的に更新または挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。