EFは、500万行のSQLiteテーブルの100万行を更新するために必要なSQLをどのように作成しますか?行を1つずつ更新しますか?

アラン2

EntityFrameworkCoreを使用したい場合は、更新を行います。たとえば、タイプが「A」のこのテーブルのすべての行を「タイプA」の名前に更新すると、EFによってどのように処理されますか?

public class Deck
{
    public string DeckGuid { get; set; } 
    public string Name     { get; set; }
    public string Type     { get; set; }   
}

EFはすべての行を取得するか、または取得させてから、Type = "A"の行を選択してから、それらを1つずつ更新しますか?

また、更新が必要な行が100万行ある場合など、行を1つずつ実行しないように更新をコーディングする方法はいくつかありますか?

また、1つの行だけが更新され、列Typeにインデックスがある場合はどうでしょうか。これのいずれかが考慮されていますか?

user3746240

中を見て、このEF拡張。EFを介して大量のデータを処理する場合に非常に便利です。更新シナリオの例(ドキュメントから):

    //Delete
    context.Items.Where(a => a.ItemId >  500).BatchDelete();
    context.Items.Where(a => a.ItemId >  500).BatchDeleteAsync();

    // Update (using Expression arg.) supports Increment/Decrement 
    context.Items.Where(a => a.ItemId <= 500).BatchUpdate(a => new Item { Quantity = a.Quantity + 100 });
      // can be as value '+100' or as variable '+incrementStep' (int incrementStep = 100;)
      
    // Update (via simple object)
    context.Items.Where(a => a.ItemId <= 500).BatchUpdate(new Item { Description = "Updated" });
    context.Items.Where(a => a.ItemId <= 500).BatchUpdateAsync(new Item { Description = "Updated" });
    // Update (via simple object) - requires additional Argument for setting to Property default value
    var updateColumns = new List<string> { nameof(Item.Quantity) }; // Update 'Quantity' to default value('0'-zero)
    var q = context.Items.Where(a => a.ItemId <= 500);
    int affected = q.BatchUpdate(new Item { Description = "Updated" }, updateColumns);//result assigned to variable

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ