2017-05-09 65 views
0

如果使用下面的表結構簡單的LINQ到SQL

Key   Site   Building   Person    Grade 

Primary key SiteId   BuildingId  PersonId   GradeId 
Foreign key     SiteId   BuildingId 
               GradeId 

知道了SITEID,我期待獲得具有一組級Person對象的列表。

我使用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不允許我越挖越深,則下一個對象,所以

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和網站之間沒有直接的關係,它不是在智能感知所示。您應該嘗試通過建築物訪問某個人的網站。像'person.Building.SiteId'一樣,你也可以通過'person.GradId'直接訪問Grad。你能分享你的EF模型和映射嗎? –

回答

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