Nhibernate Criteria加入多个条件

时间:2009-11-26 18:16:54

标签: c# nhibernate

我似乎找不到任何可靠的问题答案,我希望有人能在这里帮助我。

示例查询:

select * from A a inner join B b on a.Id = b.Id Or a.Date = b.Date

基本上我想知道是否可以使用条件实现连接条件的第二部分,如果可能的话,如何实现它。如果有人可以请让我知道,那将是伟大的!非常感谢!

3 个答案:

答案 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))