ホームページ > バックエンド開発 > C++ > Entity Framework を使用して Upsert ロジックを実装するにはどうすればよいですか?

Entity Framework を使用して Upsert ロジックを実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-06 18:48:40
オリジナル
753 人が閲覧しました

How to Implement Upsert Logic Using Entity Framework?

Entity Framework を使用したロジックの更新または挿入

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

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