Nhibernate 限制条件。条件a和条件b或条件c和条件d之间的析取()
如何在NHibernate中创建析取,以实现以下sql: 从MyTable中选择* 其中(conditionA=true和conditionB=true)Nhibernate 限制条件。条件a和条件b或条件c和条件d之间的析取(),nhibernate,detachedcriteria,Nhibernate,Detachedcriteria,如何在NHibernate中创建析取,以实现以下sql: 从MyTable中选择* 其中(conditionA=true和conditionB=true) 或(条件C=true和条件D=true) 据我所见,disjunition()采用单一标准,并将它们“OR”在一起。是否可以将标准组合在一起并“或”与另一对标准相对应 我希望这个问题足够清楚 谢谢 这不太好看,但你可以这样写: .Add( Restrictions.Or( Restrictions.Conjunctio
或(条件C=true和条件D=true) 据我所见,disjunition()采用单一标准,并将它们“OR”在一起。是否可以将标准组合在一起并“或”与另一对标准相对应 我希望这个问题足够清楚
谢谢 这不太好看,但你可以这样写:
.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))
);
)
虽然不太好看,但你可以这样写:
.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))
);
)
你也可以使用
.Add(
Expression.Or(
Expression.And(Expression.Eq("columnA",true), Expression.Eq("columnB",true)),
Expression.And(Expression.Eq("columnC",true), Expression.Eq("columnD",true)))
你也可以使用
.Add(
Expression.Or(
Expression.And(Expression.Eq("columnA",true), Expression.Eq("columnB",true)),
Expression.And(Expression.Eq("columnC",true), Expression.Eq("columnD",true)))
由于查询生成器的动态特性,我最终的做法与此完全不同,但这确实回答了前面提到的问题。谢谢我使用nhibernate的运算符重载功能创建了一个AbstractCriteria,然后将所有AbstractCriteria添加到Restrictions.Disjunction()中。由于查询生成器的动态特性,我最终的做法与此完全不同,但这确实回答了前面提到的问题。谢谢我使用nhibernate的运算符重载功能创建了一个AbstractCriteria,然后将所有AbstractCriteria添加到一个Restrictions.Disjunction()中。