2012-10-16 4 views
0

.net 4.0에서 EF5를 사용하고 있으며 사용자, 프로젝트 및 관심사가 3 개 있습니다. 연결된 사용자 Many2Many 관심 분야 및 프로젝트 Many2Many FluentAPI를 사용하여 관심을 갖습니다 (각 관계에 대해 2 개의 표가 추가로 생성되었습니다). 모든 것이 훌륭하게 작동합니다.Building EF로 다 대다 쿼리

내가하고 싶은 일은 같은 관심사를 가진 사용자 당 모든 프로젝트를로드하는 것입니다. 시도했습니다

Project ... 
    .Where(p => p.Interests 
       .Any(t => user.Interests.All(i => i.Url == t.Url))); 

(관심 분야는 PK Url)입니다. 나는이 쿼리를 수행 할 때, 나는 형의 상수 값을 만들 수 없습니다

오류

를 얻을 'DAL.Models.Interest'. 이 문맥에서는, 원시 형 또는 열거 형만이 지원되고 있습니다.

올바른 쿼리는 무엇입니까?

+1

반환 할 쿼리를 명확하게 할 수 있습니까? 특정 사용자와 관심사를 공유하는 컨텍스트의 모든 프로젝트를 원하십니까? –

+0

네, 그게 제가 원하는 결과입니다. – FrEaKmAn

답변

0

문제는 user.Interests.All (...)을 SQL 프로 시저로 변환 할 수 없다는 것입니다.

그러나 기본 유형 (Url)의 목록을 만든 다음 비교할 수 있습니다.

 var userInterests = user.Interests.Select(u => u.Url); 
     var sharedProjects = m.Projects.Where(p => p.Interests.Select(i => i.Url) 
        .Any(pi => userInterests.Any(ui => ui == pi)));