我打算使用EntityFramework-Plus進行批量操作,但我不確定它是否支持批量插入。
因此,例如,我有Paren
牛逼的實體,我想插入Child
實體散裝我怎麼點,使用EF加
在下面的代碼中,父母的數量可以在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
。
免責聲明 :我是項目實體框架擴展的所有者
這個庫支持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。
_dbContext.BulkInsert(result.SelectMany(x => x.Children));