如何在Nhibernate查询中对多个列进行内部联接

如何在Nhibernate查询中对多个列进行内部联接,nhibernate,queryover,Nhibernate,Queryover,我想对我的一个实体进行查询,但我想对多个列进行查询 问题(表格) 现在GroupTable是 Id Name 1 AA 2 BB 3 CC 4 DD 5 EE 6 FF 7 GG 8 HH 9 II 现在我想用组表中的OpenId和CloseId对问题表进行查询。我该怎么办 我可以很容易地实现从SQL查询之类的 select * from questions q inner join GroupTable g on q.OpenId = g.Id Or

我想对我的一个实体进行查询,但我想对多个列进行查询

问题(表格)

现在GroupTable是

Id  Name
1   AA
2   BB
3   CC
4   DD
5   EE
6   FF
7   GG
8   HH
9   II
现在我想用组表中的OpenId和CloseId对问题表进行查询。我该怎么办

我可以很容易地实现从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; }
    }
你能试试吗

            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();
GroupTable openTable=null;
GroupTable closeTable=null;
问题=null;
List quesList=新列表();
quesList=session.QueryOver(()=>ques)
.JoinAlias(()=>ques.CloseTable,()=>CloseTable)
.JoinAlias(()=>ques.OpenTable,()=>OpenTable)
。其中(()=>ques.CloseTable==CloseTable&&ques.OpenTable==OpenTable)
.List().ToList();

我已经用类实体更新了问题,连接部分*永远不会填充
。。。如果使用NHibernate。将为“打开”或“关闭”属性连接它。或者两者都有-但随后将创建两个联接。。。因此,上面的选择不会起作用,那么最好的方法是什么?通过sql查询?在“session.QueryOver(()=>ques)”上有语法错误,您可以与meI共享问题类和映射文件吗?我不认为这会起作用。它在两列上进行内部联接,因此这将是q.OpenId=g.Id和q.CloseId=g.Id的正确答案。他的问题是关于或。
            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();