如何在 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();
我想查询我的一个实体,但我想完成多个列。
问题 (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();