EntityFramework-Plusを使用した一括挿入

entity-framework entity-framework-extensions entity-framework-plus

質問

私は一括操作のためにEntityFramework-Plusを使用する予定でしたが、一括挿入をサポートしているかどうかはわかりません。

例えば、私はParen tエンティティを持っていて、 Childエンティティを大量に挿入したいのですが、EF Plus

下のコードでは、親の数は1000-2000の範囲にあり、子供の数は10-20です。条件を満たしている場合は、各親に同じ子を追加したい

public async Task AddChildern(IEnumerable<Child> children)
{
    var ids =  GetIDs();
    var result = _dbContext.Parent.Where(x=> ids.contains(x.ID)).ToListAsync();
   foreach(var p in result)
   {
         foreach(var child in children)
         {
               var flag = CanAddChild(child);
               if(flag)
               {
                    p.Children.Add(child);
               }
         }
   }
}

エキスパート回答

免責事項 :私はEntity Framework Plusプロジェクトのオーナーです

このライブラリはBulkInsertサポートしていません。

免責事項 :私はEntity Framework Extensionsプロジェクトのオーナーです

このライブラリはBulkInsertをサポートしていますが、無料ではありません。

(EF Plusはこのライブラリによって駆動されます)

あなたのシナリオでは、子のエンティティは親(ナビゲーションプロパティまたは親IDなし)と直接関係しないため、 BulkSaveChangesメソッドを使用する必要があります。

public async Task AddChildern(IEnumerable<Child> children)
{
    var ids =  GetIDs();
    var result = _dbContext.Parent.Where(x=> ids.contains(x.ID)).ToListAsync();
    foreach(var p in result)
    {
         foreach(var child in children)
         {
               var flag = CanAddChild(child);
               if(flag)
               {
                    p.Children.Add(child);
               }
         }
    }
}

// ...code... 

_dbContext.BulkSaveChanges();

編集:回答コメント

子供はParentIDを持っています

リレーションがどのように設定されているかに応じて、直接BulkInsertを実行することもできます。

public async Task AddChildern(IEnumerable<Child> children)
{
    var ids =  GetIDs();
    var result = _dbContext.Parent.Where(x=> ids.contains(x.ID)).ToListAsync();
    foreach(var p in result)
    {
         foreach(var child in children)
         {
               var flag = CanAddChild(child);
               if(flag)
               {
                    p.Children.Add(child);
               }
         }
    }
}

// ...code... 

_dbContext.BulkSaveChanges();



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ