1

내 엔티티 프레임 워크 모델 (ObjectContext와 함께 EF 6.1 사용)에는 다양한 탐색 속성으로 지연로드가 설정되어 있습니다. 내가 가진,엔티티 프레임 워크 - 엔티티 분리 후 탐색 속성 복원

MyContext.Detach(order1); 
MyContext.Detach(order2); 
MyContext.Detach(order3); 

을하지만 :

내 응용 프로그램에서
// Orders is a navigation property (collection), which, when first iterated, 
// loads the collection of Order entities from the DB 
var orders = Customer.Orders.ToList(); 

는 성능상의 이유로, 나는 Order 개체를 분리하고 쓰레기를 수집 할 수 있도록 할 수 있도록하려면 : 예를 들어

하위 엔티티의 하위 세트 만 분리하면 (즉 모든 세트가 아닌 경우) Customer.Orders의 다음 반복이 작동하지 않습니다. 분리 된 엔티티는 반환 된 콜렉션의 일부가 아닙니다.

나는 Customer.Orders 탐색 속성을 복원하고 다시 그 이전에 분리를 포함한 모든 개체를 다시 부착을 강제로이 상황에서 제대로 작동하도록하기 위해 쓸 수있는 어떤 코드 ?

내가 수동으로 false-Customer.Orders.IsLoaded 설정을 시도했다, 그러나 그것은 작동하지 않습니다 - 엔티티가 다시로드되지 않으며, 어딘가 EF 후드 IsLoaded에서 단순히 true로 다시 설정됩니다.

+0

나는 가정 .Load은() 중 하나가 작동하지 않습니다

당신은 LoadProperty 방법을 사용할 수 있습니까? – DevilSuichiro

+1

성능상의 이유로 엔티티를 분리해야하는 경우 * 문제가 아키텍처의 더 깊은 레벨에 있다고 느낍니다. 더 구체적으로 말하면, 너무 오래 사는 문맥. –

답변

1
를 컨텍스트에 연결하고 사용 필요한 변경 사항을 추적하기 위해 다시 엔티티 프레임 워크를 원하는 경우 개체는 단지 AsNoTracking

using (var context = new BloggingContext()) 
{ 
    var blogs = context.Blogs 
     .AsNoTracking() 
     .ToList(); 
} 

를 사용하여 분리하는

context.LoadProperty(customer, c => c.Orders, MergeOption.OverwriteChanges);

+1

신난다, 이것은 내가 찾고 있었던 정확하게 것을했다. – Ross

0

당신이 ctx.myDbSet.Include (X => x.Something)