"이것은 나를 위해 일했습니다.
dataContext.customer.Context.Refresh(RefreshMode.StoreWins, item);
item되돌릴 고객 엔티티는 어디에 있습니까 ? "
SQL Azure에서 ObjectContext.Refresh를 사용하여 테스트를 수행했으며 "RefreshMode.StoreWins"는 각 엔터티에 대한 데이터베이스에 대한 쿼리를 실행하고 성능 누수를 유발합니다. Microsoft 설명서 ()를 기반으로 :
ClientWins : 개체 컨텍스트의 개체에 대한 속성 변경 사항이 데이터 소스의 값으로 대체되지 않습니다. 다음에 SaveChanges를 호출하면 이러한 변경 사항이 데이터 소스로 전송됩니다.
StoreWins : 개체 컨텍스트의 개체에 대한 속성 변경 사항이 데이터 소스의 값으로 바뀝니다.
.SaveChanges를 실행하면 데이터 소스에 "삭제 된"변경 사항이 커밋되기 때문에 ClientWins도 좋은 아이디어가 아닙니다.
생성 된 새 컨텍스트에서 쿼리를 실행하려고 할 때 컨텍스트를 삭제하고 새 컨텍스트를 만들면 "기본 공급자가 열릴 때 실패했습니다"라는 메시지와 함께 예외가 발생하기 때문에 아직 최선의 방법이 무엇인지 모르겠습니다.
문안 인사,
Henrique Clausing
Context.Refresh()되돌리기 작업이 없다는 귀하의 주장에 대한 반례입니다. 사용Refresh()은 컨텍스트를 처리하고 추적 된 모든 변경 사항을 잃는 것보다 더 나은 접근 방식 (즉, 특정 엔터티를 더 쉽게 대상으로 지정)으로 보입니다.