如何在Nhibernate查询中对多个列进行内部联接
我想对我的一个实体进行查询,但我想对多个列进行查询 问题(表格) 现在GroupTable是如何在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
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();