如何在NHibernate中创建一个能够完成以下sql的析取:
从MyTable中选择* 其中(conditionA = true AND conditionB = true)
OR(conditionC = true AND conditionD = true)
从我所看到的,Disjuntion()采用单一标准并将它们“或”组合在一起。是否可以将标准组合在一起并将其与另一对标准“或”?
我希望这个问题很清楚。
谢谢!
答案 0 :(得分: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))
);
)
答案 1 :(得分:2)
您也可以使用
.Add(
Expression.Or(
Expression.And(Expression.Eq("columnA",true), Expression.Eq("columnB",true)),
Expression.And(Expression.Eq("columnC",true), Expression.Eq("columnD",true)))