我似乎找不到任何可靠的问题答案,我希望有人能在这里帮助我。
示例查询:
select * from A a inner join B b on a.Id = b.Id Or a.Date = b.Date
基本上我想知道是否可以使用条件实现连接条件的第二部分,如果可能的话,如何实现它。如果有人可以请让我知道,那将是伟大的!非常感谢!
答案 0 :(得分:1)
可能是,但该查询在HQL中更清晰:
select a from A a, B b where a.Id = b.Id or a.Date = b.Date
如您所见,它与SQL几乎相同。
答案 1 :(得分:0)
不幸的是,您无法使用NHibernate定义ANSI语法连接。 使用NH2及以后,您可以使用WITH子句在HQL上定义它们,我这样说是因为如果您使用Diego的解决方案,如果要执行多个连接,则必须在查询中设置ISNULL OR模式。
答案 2 :(得分:0)
添加条件,使用表达式。对于OR
析取,如果使用Expresion.In
session.CreateCriteria(typeof(A), "a").CreateCriteria("B", "b", NHibernate.SqlCommand.JoinType.FullJoin)
.Add(Expression.Eq("a.Date", a.Date))
.Add(Expression.Eq("b.Date", b.Date))