대량 작업을 위해 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를 수행 할 수도 있습니다.
_dbContext.BulkInsert(result.SelectMany(x => x.Children));