如何在 Nhibernate Query Over 中对多列进行内连接

How to do Inner join on multiple columns in Nhibernate Query Over

我想查询我的一个实体,但我想完成多个列。

问题 (Table)

Id  Name    OpenId     CloseId
1   A         1          NULL
2   B         2           3
3   C         4           5
4   D         6           7
5   E         8           9

现在群组Table是

Id  Name
1   AA
2   BB
3   CC
4   DD
5   EE
6   FF
7   GG
8   HH
9   II

现在我想使用来自组 table 的 OpenId 和 CloseId 对问题 table 执行 queryOver。我能怎么做。

我可以很容易地从SQL这样的查询中实现。

select * from questions q 
inner join GroupTable g on q.OpenId = g.Id Or q.CloseId = g.Id

我怎样才能通过 Queryover 得到这个?

class 结构如下所示:

public class Question
    {
        public int Id { get; set; }
        public GroupTable OpenTable { get; set; }
        public GroupTable CloseTable { get; set; }
    }

    public class GroupTable
    {
        public int Id { get; set; }
        public int Name { get; set; }
    }

可以试试吗

            GroupTable openTable = null;
            GroupTable closeTable = null;
            Question ques = null;
            List<Question> quesList = new List<Question>();

            quesList = session.QueryOver<Question>(() => ques)
                .JoinAlias(() => ques.CloseTable, () => closeTable)
                .JoinAlias(() => ques.OpenTable, () => openTable)
                .Where(() => ques.CloseTable == closeTable && ques.OpenTable == openTable)
                .List().ToList();