1

如何在 NHibernate 中创建一个析取来完成以下 sql:

Select * from MyTable
Where (conditionA = true AND conditionB = true)
OR (conditionC = true AND conditionD = true)

据我所见, Disjuntion() 采用单一标准并将它们“或”在一起。是否可以将标准组合在一起并针对另一对标准“或”它?

我希望这个问题足够清楚。

谢谢!

4

2 回答 2

6

它不是很漂亮,但你会这样写:

.Add(
    Restrictions.Or(
        Restrictions.Conjunction().Add(Restrictions.Eq("columnA", true)).Add(Restrictions.Eq("columnB", true)),
        Restrictions.Conjunction().Add(Restrictions.Eq("columnC", true)).Add(Restrictions.Eq("columnD", true))
 );
                                                                )
于 2009-08-14T03:23:45.580 回答
2

你也可以使用

.Add(
     Expression.Or(
         Expression.And(Expression.Eq("columnA",true), Expression.Eq("columnB",true)),
         Expression.And(Expression.Eq("columnC",true), Expression.Eq("columnD",true)))
于 2009-08-14T05:23:05.907 回答