Entity Framework의 데이터 삽입 속도 향상
Entity Framework에 대용량 데이터를 삽입하려면 최적화된 기술이 필요합니다. 이 기사에서는 빠른 삽입 속도를 달성하는 가장 효율적인 방법을 살펴봅니다.
잦은 SaveChanges()
통화의 함정
각 레코드에 대해 SaveChanges()
을 호출하는 것은 주요 성능 병목 현상입니다. 속도를 최대화하려면 이 방법을 사용하지 마십시오. 다음 대안을 고려하십시오.
일괄 SaveChanges()
:
SaveChanges()
호출을 실행하여 모든 삽입을 동시에 커밋합니다.주기적 SaveChanges()
:
SaveChanges()
를 호출합니다.컨텍스트 재활용:
DbContext
마다 SaveChanges()
를 삭제하고 새 예시 코드:
이 예는 효율적인 삽입 전략을 보여줍니다.
<code class="language-csharp">using (TransactionScope scope = new TransactionScope()) { MyDbContext context = null; try { context = new MyDbContext(); context.Configuration.AutoDetectChangesEnabled = false; int count = 0; foreach (var entityToInsert in someCollectionOfEntitiesToInsert) { ++count; context = AddToContext(context, entityToInsert, count, 100, true); } context.SaveChanges(); } finally { if (context != null) context.Dispose(); } scope.Complete(); }</code>
벤치마크 결과:
560,000개 개체를 대상으로 한 테스트에서 다음과 같은 결과가 나왔습니다.
SaveChanges()
개인 :
SaveChanges()
이러한 결과는 컨텍스트 삭제를 사용하는 주기적
위 내용은 대용량 데이터 삽입을 위해 Entity Framework를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!