2017-05-09 7 views
0

SiteId을 알고 다음과 같은 테이블 구조간단한 Linq는 SQL을

Key   Site   Building   Person    Grade 

Primary key SiteId   BuildingId  PersonId   GradeId 
Foreign key     SiteId   BuildingId 
               GradeId 

, 나는 일련의 등급을 가지고 사람 개체의 목록을 얻기 위해 찾고있는 경우에. 나는 UOF 및 저장소 패턴을 다음과 같이 데이터가 당겨하는 데 사용되는 코드를 사용하고

가 :

var site = unitOfWork.Repository<Site>() 
        .Query(si => si.SiteId == siteId) 
        .Select() 
        .FirstOrDefault(); 

내가 뭘하고 싶은 것은 무엇인가와 같은 :

List<Person> person = Person.Where(p => p.Site.SiteId == 99 
        && p.Site.Building.person.Grade == 3); 

하지만, Intellisence에있는 사람이나 학년 개체에서 사이트를 볼 수 없습니다.

나는 테이블을 포함하는 것을 시도했다, 그러나 다시, intellisence 그래서, 내가 다음 객체 후 더 깊이 파고 내가 저를 변경하거나 활성화해야 할 무엇

var site = unitOfWork.Repository<Site>() 
        .Query(si => si.SiteId == siteId) 
        .Include(si => si.Building) 
        .Include(si => si.Building.Person) ..... not visible 
        .Select() 
        .FirstOrDefault(); 

을 허용하지 않습니다

  • 사람 개체를 끌어 다시 별도의 테이블 초기 쿼리의 개체 기존 코드를 사용하여
  • intellisence 사용하여 객체 트래버스
  • 를 당겨
+0

이 이유는 EF에 매핑되지하는 사람과 사이트 사이에 직접적인 관계가 없으며, 그것이 인텔리에 표시되지 않습니다. 건물을 통해 사람의 사이트에 액세스 해보십시오. 'person.Building.SiteId'와 마찬가지로'person.GradId'를 통해 Grad에 직접 액세스 할 수 있습니다. EF 모델 및 매핑을 공유 할 수 있습니까? –

답변

0
var person = Person.Where(p => p.Building.SiteId == 99 && p.GradeId == 3).ToList();