우리는 여러 개의 제한된 컨텍스트를 가지고 있으며 때로는 요청시 RefreshMode.StoreWins을 강제 실행해야합니다.EF4.4 별도의 리프레시가 아닌 요청시 StoreWins를 설정하는 방법은 무엇입니까?
현재 우리는 두 단계 과정으로이 작업을 수행 :
// Run my query, this handles refreshing WRT adds/deletes from other dbContext
var myThings = dbContext.Set<MyThing>()
.Where(x => x.blah)
.ToList();
// Get all entities in the change tracker.... any of them might have changed...!
var allEntities = DataContext.ChangeTracker.Entries().Select(c => c.Entity).ToList();
// Refresh all these entities, this handles refreshing WRT updates from other dbContext
(((IObjectContextAdapter)dbContext).ObjectContext).Refresh(RefreshMode.StoreWins, allEntities);
이 우리의 응용 프로그램의 올바른 기능을 위해 필요하다.
그러나 매우 비효율적입니다. EF가 내 쿼리를 실행하기 위해 데이터베이스에 방금 갔지만 일부 기본 작성된 RefreshMode.ClientWins로 인해 자체 복사본을 메모리에 보관하도록 선택했습니다.
일부 전역 기본값 인 RefreshMode.StoreWins을 설정하거나 요청별로 표시 할 수 있습니까?
P. 주어진 화면의 수명 동안 DbContext를 유지해야하며, 새로운 요청마다 다시 생성하지 않습니다.