【问题标题】:How to create OR statements for NHibernate?如何为 NHibernate 创建 OR 语句?
【发布时间】:2008-12-22 14:03:33
【问题描述】:

为 NHibernate 创建条件时,所有条件都添加为 AND

例如:

session.CreateCriteria(typeof(someobject))
.Add(critiera)
.Add(other_criteria)

那么最终结果将是

SELECT ...
FROM ...
WHERE criteria **AND** other_criteria

我想告诉 NHibernate 将条件添加为“OR”

SELECT ...
FROM ...
 WHERE criteria **OR** other_criteria

感谢任何帮助

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

    您正在寻找 ConjunctionDisjunction 类,它们可用于组合各种语句以形成 OR 和 AND 语句。

    .Add(
      Expression.Conjunction()
        .Add(criteria)
        .Add(other_criteria)
    )
    

    .Add(
      Expression.Disjunction()
        .Add(criteria)
        .Add(other_criteria)
    )
    

    【讨论】:

      【解决方案2】:

      使用Restrictions.Disjunction()

              var re1 = Restrictions.Eq(prop1, prop_value1);
              var re2 = Restrictions.Eq(prop2, prop_value2);
              var re3 = Restrictions.Eq(prop3, prop_value3);
      
              var or = Restrictions.Disjunction();
              or.Add(re1).Add(re2).Add(re3);
      
              criteria.Add(or);
      

      【讨论】:

        【解决方案3】:

        你可以使用Restrictions.or,这样:

        session.CreateCriteria(typeof(someobject))
            .Add(critiera)
            .Add(other_criteria);
        

        地点:

        other_criteria = Restrictions.or("property", "value");
        

        您可以通过Criteria Interface documentation of Hibernate了解更多相关信息,与NHibernate相同。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-18
          • 1970-01-01
          • 2021-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多