0

バルク操作にEntityFramework-Plusを使用する予定でしたが、バルク挿入がサポートされているかどうかわかりません。EntityFramework-Plusを使用したバルク挿入

だからたとえば、私はParenトンエンティティを持っていると私は親の数以下のコードではEFプラス

を使用すると、1000年から2000年の範囲と数の間であることができることをドットんどのように大量にChildエンティティを挿入したいです子供は10〜20歳です。私はプロジェクトEntity Framework Plus

の持ち主だ。このライブラリは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); 
       } 
     } 
    } 
} 

答えて

0

免責事項があれば、それぞれの親のために同じ子を追加します。

免責事項:私はこのライブラリはBulkInsertをサポートしていますが、それは無料ではないEntity Framework Extensions

プロジェクトの所有者です。

(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(); 

EDIT:回答コメント

子供は関係が設定されている方法に応じてのParentID

を持っている、あなたも直接BulkInsertを行うことができます。

_dbContext.BulkInsert(result.SelectMany(x => x.Children)); 
+0

子供はParentIDを持っています – LP13

関連する問題