ホームページ >バックエンド開発 >C++ >Entity Framework で行を更新または挿入する方法: Upsert ロジックの説明

Entity Framework で行を更新または挿入する方法: Upsert ロジックの説明

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-06 18:24:38258ブラウズ

How to Update or Insert Rows in Entity Framework: Upsert Logic Explained?

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

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。