ホームページ > バックエンド開発 > C++ > Entity Framework で行を効率的に更新または挿入するにはどうすればよいですか?

Entity Framework で行を効率的に更新または挿入するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-06 18:28:45
オリジナル
942 人が閲覧しました

How to Efficiently Update or Insert Rows in Entity Framework?

存在する場合は行を更新、そうでない場合は Entity Framework でロジックを挿入

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート