2013-01-10 2 views
1

이 람다 쿼리에 어떤 문제가 있습니까? 단지 특정 유형의 ProjectDocs을 포함에 나는 할 수 있도록하려면, ProjectDocs. 특정 유형의 파생 클래스 포함()?

ICollection<Project> projects = db.Projects 
     .Include(i => i.ProjectDoc.OfType<Cover>().Where(s => s.Status == "Active")) 
     .Include(i => i.ProjectDoc.OfType<Summary>().Where(s => s.Status == "Active")) 
     .Include(i => i.User) 
     .Include(i => i.ProjectTag.Select(t => t.Tag)).ToList(); 

파생 클래스, 세그먼트 및 요약을 표지에 내가 모델 ProjectDoc이 많은 종류가있을 수 있습니다. ProjectDoc을 포함시켜야하고 나중에 조건에서 식별자 열을 사용해야합니까? 유형 중 일부는 많은 수의 결과를, 일부는 많은 결과를 가질 수 있습니다.

내가 오류 ... "프로젝트"에

The Include path expression must refer to a navigation property defined 
on the type. Use dotted paths for reference navigation properties and the 
Select operator for collection navigation properties. 
Parameter name: path 

탐색 속성 ProjectDoc입니다. 파생 클래스에는 탐색 속성이 없습니다. 내가 그것을 시도했을 때 나는 여분의 톤이 있었다.

+0

오류가 있습니까? –

+0

@Hamlet이 주 질문에 오류를 추가했습니다. –

답변

2

이 시나리오는 지원되지 않습니다. 관련된 엔티티 집합 만로드하거나로드 할 수는 없지만 필터 식을 적용하여 엔티티의 하위 집합 만로드 할 수는 없습니다.

API documentation for Include()은 지원되는 다른 표현식을 나열하고 메서드가 문자열을 인수로 취하는 기본 Include() 메서드 (예 : ObjectQuery.Include())에 작업을 위임한다고 명시합니다. 이 방법과 연결된 페이지 Shaping Query Results의 설명서는 이것이 지원되지 않는다는 것을 다소간 명백하게합니다.

+0

좋아요, 그럼 뷰에 파생 클래스 필터를 적용하려면 어떻게해야합니까? –

+0

상속 모델에 따라 다릅니다. 예를 들어 TPH를 사용하면 식별자 필터 열을 필터링 할 수 있습니다. –

관련 문제