Entity Framework を使用する場合、行が存在する場合は行を更新するロジックを実装する効率的な方法があります。存在するか、新しい行を挿入します。
添付済みオブジェクト
添付オブジェクト (現在のコンテキスト インスタンスからロードされたオブジェクト) を扱う場合は、次のアプローチを使用します。
if (context.ObjectStateManager.GetObjectStateEntry(myEntity).State == EntityState.Detached) { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
オブジェクトは自動的に変更を追跡し、 SaveChanges() 呼び出しは、必要に応じて更新または挿入操作を実行します。
キーを持つアタッチされていないオブジェクトCheck
オブジェクトのキー値が利用可能な場合は、次のコードを使用できます:
if (myEntity.Id != 0) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
このアプローチでは、まず 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 で行を効率的に更新または挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。