Nhibernate Criteria多条件连接

4

我似乎找不到任何关于这个问题的确切答案,希望有人能在这里帮助我。

示例查询:

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

我想知道是否可以使用criteria实现连接条件的第二部分,如果可能的话,请告诉我具体方法。非常感谢!

3个回答

1

这可能是,但那个查询在HQL中写得更清晰:

select a from A a, B b where a.Id = b.Id or a.Date = b.Date

正如您所看到的,它几乎与SQL相同。


尽管由于我们放置的一些自定义包装器来更改结果,我并不能准确使用HQL,但它让我思考了如何更改查询方式。感谢您抽出时间回答我的问题! - Akey

0

要添加条件,请使用表达式。对于OR析取,如果使用Expression.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))

0

很遗憾,您不能使用NHibernate定义ANSI语法连接。 从NH2开始,您可以在HQL上使用WITH子句来定义它们。如果您使用Diego的解决方案,那么如果您想执行多个连接,则必须在查询中设置ISNULL OR模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接