Nhibernate 与JoinQueryOver打球:得到曾孙,认识父亲

Nhibernate 与JoinQueryOver打球:得到曾孙,认识父亲,nhibernate,fluent-nhibernate,queryover,Nhibernate,Fluent Nhibernate,Queryover,对象结构: 房子有许多房间。 一个房间有许多桌子。 桌子上有许多花瓶 房子>房间>桌子>花瓶 我想使用JoinQueryOver来选择特定房子中所有带有红色花瓶的桌子 我想这样做: var v = session.QueryOver<House>() .Where(x => x.ID == HouseID) .JoinQueryOver<Room>(x => x.Rooms) .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()
.其中(x=>x.ID==HouseID)
.JoinQueryOver(x=>x.Rooms)
.JoinQueryOver(x=>x.Tables)
.JoinQueryOver(x=>x.vasses)
.其中(x=>x.颜色==“红色”)
.SingleOrDefault();
这是我(在许多失败的方法中)尝试过的方法。我真的不想要房子和房间的信息

最后,我要寻找一张桌子的清单(在一个特定的房子里),上面有他们收集的花瓶(红色的)

谢谢你的帮助

编辑

像这样的东西会很好:

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();
var v=session.QueryOver()
.Where(x=>x.Room.House.ID==HouseID)//这个地方不起作用。
.JoinQueryOver(x=>x.vasses)
.其中(x=>x.颜色==“红色”)
.List().ToList();
var v=session.QueryOver()
.JoinAlias(x=>x.Room,()=>Room)
.Where(()=>room.House.ID==HouseID)
.JoinQueryOver(x=>x.vasses)
.其中(x=>x.颜色==“红色”)
.List();

谢谢菲罗。。。就是这样。抱歉耽搁了。
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();