문제

표준 자체 참조 테이블이 있습니다 Categories. 내 엔티티 모델에서 나는 협회를 만들었다 Children 그리고 Parent. 전체를로드 할 수 있습니까? Category 게으른 하중이없는 물체?

아래 코드를 사용하면 두 번째 레벨에만로드됩니다.

db.Categories.MergeOption = System.Data.Objects.MergeOption.NoTracking;

var query = from c in db.Categories.Include("Children")
            where c.IsVisible == true
            orderby c.SortOrder, c.Id
            select c;

모든 카테고리 객체가 이미로드 된 경우 참조를로드 할 수 있습니까?

로드하는 한 가지 방법은 추가하는 것입니다 Children 재산 여러 번

db.Categories.Include("Children.Children.Children.Children.Children")

그러나 이것은 매우 긴 미친 T-SQL 코드를 생성하며 또한 내가 원하는 것을 수행하지 않습니다.

도움이 되었습니까?

해결책

아니요, 가능하지 않습니다. 고려 : 모든 LINQ에서 엔티티 쿼리는 SQL로 변환됩니다. 자체 참조 계층 구조에서 무제한 깊이가 포함 된 SQL 문은 무엇입니까? 표준 SQL에는 하나가 없습니다. T-SQL에 이것에 대한 확장이 있다면 그것이 무엇인지 모르고 EF 제공 업체도 그렇게 생각하지 않습니다.

다른 팁

자,로드 방법 사용을 고려할 수 있습니다.

 if (!category.Children.IsLoaded)
        category.Children.Load();

물론 카테고리 엔티티는 ObjectContext에 의해 추적되어야합니다.

여기에는 더 나은 설명이 있습니다 방법-엔티티 프레임 워크-이하의 집중식-이시기에 대한 시멘트-비.

여러 개체가 있다면 모든 어린이를 자체 참조 테이블에 데려 가고 싶은 방법을 구현하는 데 사용한 한 가지 방법 재귀 CTE 그리고 저장된 절차 엔티티 프레임 워크를 사용하여 ID를 얻으려면 :Entity Framework 및 Code First Approach를 사용한 코드는 다음과 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top