2011-04-14 3 views
1

EntityFramework 4.1에서 SaveChanges는 context.ChangeTracker.Entries()를 줄이지 않습니다. 그게 정상인가요? 오버 헤드가 있습니까?EntityFramework 4.1 ChangeTracker.Entries.Count & SaveChanges

일부 고객의 경우 우편 번호를 업데이트해야한다고 분명히 말하면됩니다. 그래서 아래 코드를 가지고 있습니다.

내가 4.0 생각
using (CustomerContext ctx = new CustomerContext()) 
      { 
       var customers = ctx.Customers.Where(a => a.ZipCode = 12345); 
       foreach (var customer in customers) 
       { 
        customer.ZipCode = 54321; 
        ......... 
        ctx.SaveChanges(); //ctx.ChangeTracker.Entries().Count is NOT set to zero 
       } 
      } 

는 ObjectStateManager는 SaveChanges를()에 제로로 카운트를 재설정하지만 4.1 ChangeTracker.Entries에(). 아니다 계산합니다. 그 이유를 알려줘. 감사.

답변

1

이것은 일반적으로 정상입니다. 변경 사항을 저장 한 후에는 모든 엔티티가 컨텍스트에 연결되어 있습니다. 변경 사항 저장 중 삭제 된 엔티티 만 분리됩니다. 수정 된 항목의 상태는 기본 동작이 Modified/Added에서 Unchanged으로 변경되어 있습니다. ObjectStateManager은 절대적으로 동일하게 동작합니다. DbChangeTracker은 단지 ObjectStateManager 위에 구축됩니다.

관련 문제