2015-02-05 2 views
2

LazyLoading을 부분적으로 비활성화 할 수 있습니까? 예를 들어 는 :Entity Framework : 부분 지연 LazyLoading

우리가있는 경우 : ParentObject - ChildLevel1- ChildLevel2은

은 내가 ParentObject이로드 될 때 그래서, ChildLevel1가 자동으로로드되지 않아야 만 ChildLevel1에 대한 LazyLoading 해제 할. 하지만 수동으로 ChildLevel1을로드 할 때 childlevel2의 경우 Lazyloading은 평소대로 작동해야합니다.

가능한가요?

감사합니다.

답변

1

Entity Framework에서는 지연로드가 가능하도록 public virtual이 아닌 네비게이션 속성이 sealed으로 표시되어야합니다. 따라서 귀하의 escenario를 실현 하시려면 클래스의 ChildLevel1 navegation 속성에서 virtual 키워드를 제거하십시오.

나는 이것을 post으로 읽어 보시기 바랍니다. 이것을 설명하는 또 다른 유용한 링크는 MSDN의 Requirements for Creating POCO Proxies

+0

입니다.하지만이 문제는 영구히 원하지 않습니다. 어떤 경우에만이 시나리오를 원한다. 다른 경우에는 LazyLoading이 ChildLevel1에서도 평상시처럼 작동해야한다. – alex

+0

죄송하지만, 가능하지 않습니다. 네비게이션 속성 가상을 정의하면 EF는 런타임에 ParentObject 클래스에서 파생 된 새로운 클래스 (동적 프록시)를 만들고 대신 사용합니다. 이 새로운 동적으로 생성 된 클래스에는 처음 액세스 할 때 탐색 속성을로드하는 논리가 포함되어 있습니다. 이것은 런타임에 활성화 또는 비활성화 할 수있는 것이 아닙니다. – octavioccl

관련 문제