2010-05-25 2 views
0

자식 미리보기로 OrderDetails가있는 Entity Order가 있다고 가정합니다.Entity Framework 4.0에서 자동 Lazyloading

I는 다음과 같이 lazyloading 사용 :

_context.ContextOptions.LazyLoadingEnabled = true; 

나는이 같은 방법으로 뷰를 공급할 수 : 주문 세부 사항에 의해

Order.GetAll()

그리고 이동 자동으로받지 않고 wirerd "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."오류 ??

+3

을 당신이 더 많은 코드를 제공해야 할 수도 있습니다 생각 :

그래서 Order.GetAll()

return context.Orders.Include("OrderDetails"); 

또 다른 대안과 같이, 나중에 주문 세부 사항을로드하는 것입니다 포함됩니다. 이 오류는 엔티티가 아닌 다른 많은 것들을 가리킬 수 있습니다. 네, 게으른 로딩을 사용하면 네비게이션 속성을 통해 데이터 소스에서 명시 적으로로드하지 않고도 OrderDetails 엔터티에 액세스 할 수 있습니다. – Scott

답변

0

게으른로드가있는 경우 개체를로드 할 때 명시 적으로 하위 개체를 포함해야합니다.

if (!order.OrderDetailsHeaders.IsLoaded) 
{ 
    order.OrderDetailsHeaders.Load(); 
} 
+0

게으른 로딩이 false가 아닌 true로 설정된 경우 위의 내용이 적용된다고 생각합니다. 올바른가요? – Scott

+0

@ 스콧, 아니, 나는 그렇게 생각하지 않는다. 지연로드는 엔티티가로드 될 때 하위 요소가로드되지 않음을 의미합니다. .Include 또는 .Load를 사용하여 하위 엔티티를 명시 적으로로드해야합니다. – Mac

+1

@Mac, LazyLoadingEnabled = true; 엔티티가로드 될 때 자식을로드하지 않지만 네비게이션 속성을 사용하여 처음 액세스 할 때 엔티티가 자동으로로드됩니다. 명시 적으로로드하지 않아도됩니다. 또는 .Include를 사용하여 즉시 자식을로드하거나 LazyLoadingEnabled = false를 설정할 수 있습니다. 엔티티에 액세스해야하기 전에 .Load를 호출하십시오. 이 링크를 참조하십시오 : http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontextoptions.lazyloadingenabled.aspx – Scott

관련 문제