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는 합법적입니까? 예, 이유를 알아보십시오.