如何为NHibernate创建或声明?

如何为NHibernate创建或声明?,nhibernate,Nhibernate,为NHibernate创建标准时,所有标准都添加为和 例如: session.CreateCriteria(typeof(someobject)) .Add(critiera) .Add(other_criteria) 那么最终的结果将是 SELECT ... FROM ... WHERE criteria **AND** other_criteria 我想告诉NHibernate将标准添加为“或” 感谢您提供的任何帮助您可以使用限制。或,例如: session.CreateCriteria

为NHibernate创建标准时,所有标准都添加为

例如:

session.CreateCriteria(typeof(someobject))
.Add(critiera)
.Add(other_criteria)
那么最终的结果将是

SELECT ...
FROM ...
WHERE criteria **AND** other_criteria
我想告诉NHibernate将标准添加为“或”


感谢您提供的任何帮助

您可以使用
限制。或
,例如:

session.CreateCriteria(typeof(someobject))
    .Add(critiera)
    .Add(other_criteria);
其中:

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

您可以在下面的中了解更多信息,这与NHibernate相同。

您正在寻找
连接类
析取类
类,这些类可用于组合各种语句以形成OR语句

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

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

使用
限制。析取()

.Add(
  Expression.Disjunction()
    .Add(criteria)
    .Add(other_criteria)
)
        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);