2 개의 테이블간에 다 대다 관계가 있습니다. 기능의Entity Framework 기능을 사용하여 레코드 삭제 대 DELETE stmt 직접 사용
하나는 탐색 테이블의 모든 레코드를 삭제로 구성하고이를 다시 채 웁니다. 내가 직접 발행 할 ExecuteSqlCommand
를 사용할 때
foreach (var funcionario in listFuncionario)
{
int fun_id = 0;
if (!int.TryParse(funcionario.Trim(), out fun_id))
continue;
var fun = db.Funcionario.Find(fun_id);
fun.Servicio.ToList().ForEach(s => db.Servicio.Remove(s));
fun.Servicio.Clear();
foreach (var servicio in listServicio)
fun.Servicio.Add(db.Servicio.Find(servicio));
}
db.SaveChanges();
그 루프는, 그러나, (특별히 삭제) 매우 느린 :
는 내가 처음이의 평균으로 컬렉션을 다시 채우기 후 관련 기록을 삭제하고 의해 엔티티 프레임 워크를 사용DELETE
및 문을 사용하면 루프가 빠릅니다.
내가 엔티티 프레임 워크와 객체 지향 프로그래밍의 본질이 손실되기 때문에 SQL 명령을 직접 실행 좋아하지 않는다. Entity Framework를 사용하여보다 효율적인 방법으로이를 수행 할 수있는 방법을 알고 계십니까? listFuncionario
에서
안부, 각 ID에 대한 제이미
당신은 시도 할 수 있었다'= 거짓 db.Configuration.AutoDetectChangesEnabled,'* 전 * 일반적으로 대량 작업의 같은 종류의 성능을 향상하여 외부'foreach' 루프. 'Servicio' 엔티티를 (db.Servicio.Remove (s)로하고있는) DB에서 정말로 삭제하고 싶습니까? 또는 링크 레코드 만? – Slauma