通过JoinQueryOver获取:获得伟大的孩子,知道父亲

cyr*_*llo 4 nhibernate fluent-nhibernate queryover

对象结构:房子有很多房间.一个房间有很多桌子.一张桌子上有很多花瓶(上面).

房子>房间>桌子>花瓶.

我想使用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>();
Run Code Online (Sandbox Code Playgroud)

这是我尝试的一种方法(许多方法都失败了).我真的不想要房子和房间信息.

最终,我正在寻找一个桌子列表(在一个特定的房子里),他们的花瓶(红色)的集合被取出.

谢谢您的帮助!

编辑

像这样的东西会很好:

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();
Run Code Online (Sandbox Code Playgroud)

Fir*_*iro 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();
Run Code Online (Sandbox Code Playgroud)