1
수천 개의 행이있는 SQL 테이블이 있으며 해당 스키마는 EF 마이그레이션에 의해 관리됩니다.EF 마이그레이션에서 많은 양의 데이터 업데이트
해당 테이블에 연결된 열거 형의 값을 변경하려고하므로 DB의 모든 값을 새 값으로 업데이트해야합니다. 아래와 같은 것.
this.Sql("UPDATE MyTable SET MyEnum=0 WHERE MyEnum=-1");
이 작은 테이블에 모든 좋은 것 때문이 아니라 테이블의 크기는 (내가 연결 시간 제한, tempdb의 공간 문제를 얻을 수 한 번에 그런 큰 업데이트를 실행하기 정말 적절한 트랜잭션 공간을 기록하지 문제 요법). 일괄 처리하는 것이 훨씬 더 바람직합니다. 예 :
while(ctx.MyTable.Any(m =>m.MyEnum == -1))
{
this.Sql("UPDATE TOP (1000000) MyTable SET MyEnum=0 WHERE MyEnum=-1");
}
은 불행히도 내가 마이그레이션하는 동안 테이블에서 읽을 수있는 방법을 해결하지 못할 (예를 들어, 당신은 어떻게 마이그레이션
ctx.MyTable.Any(m =>m.MyEnum == -1)
동안이 작업을 수행 할 수 있습니다). 이 작업을 수행하여 EF 마이그레이션 업데이트에서 일괄 처리 할 수있는 방법이 있습니까?
저는 원시 SQL 업데이트 (실제로 EF가 아님)를 이미 실행하고 있습니다. SP는 제한 시간 내에 완료되지 않고 실행 중 많은 로그/tempdb 공간을 사용하므로 동일한 문제가 발생하기 쉽습니다. –