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

时间:2015-11-04 11:52:39

标签: nhibernate queryover

我想对我的一个实体进行查询,但我希望为多个列完成。

问题(表)

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

现在GroupTable是

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

现在我想在Question表上使用OpenId和CloseId进行queryOver,它们来自组表。我能怎么做。

我可以从SQL查询中轻松实现,如。

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

如何通过Queryover获取此信息?

类结构如下所示:

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; }
    }

1 个答案:

答案 0 :(得分:0)

你可以尝试吗。

            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();