2011-08-31 36 views
4

對象結構: 房子有很多房間。 一個房間有很多桌子。 桌子上有許多花瓶(在上面)。加入JoinQueryOver:獲取偉大的孩子,認識父親

房屋>房間>桌子>花瓶。

我想使用JoinQueryOver選擇紅色花瓶的所有表 - 在特定的房子裏。

我認爲要做到這一點:

var v = session.QueryOver<House>() 
    .Where(x => x.ID == HouseID) 
     .JoinQueryOver<Room>(x => x.Rooms) 
      .JoinQueryOver<Table>(x => x.Tables) 
       .JoinQueryOver<Vase>(x => x.Vases) 
        .Where(x => x.Color == "Red") 
    .SingleOrDefault<House>(); 

這是一個方法我試過(失敗的很多)。我真的不想要房子和房間的信息。

最終,我正在尋找表格列表(在一個特定的房子裏),他們收集了花瓶(紅色)。

感謝您的幫助!

編輯

像這樣的事情將是很好:

var v = session.QueryOver<Table>() 
     .Where(x => x.Room.House.ID == HouseID) // this Where won't work. 
      .JoinQueryOver<Vase>(x => x.Vases) 
       .Where(x => x.Color == "Red") 
     .List().ToList(); 

回答

8
var v = session.QueryOver<Table>() 
    .JoinAlias(x => x.Room,() => room) 
    .Where(() => room.House.ID == HouseID) 
    .JoinQueryOver<Vase>(x => x.Vases) 
     .Where(x => x.Color == "Red") 
    .List(); 
+0

感謝FIRO ......這是它。抱歉耽擱了。 – cyrotello