对象结构: 房子有很多房间。 一个房间有很多桌子。 一张桌子上有很多花瓶(上面)。
House>客房>表>花瓶。
我想使用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();
答案 0 :(得分: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();