¿Cómo crear declaraciones OR para NHibernate?

Al crear un criterio para NHibernate, todos los criterios se agregan como AND .

Por ejemplo:

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

entonces el resultado final será

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

Me gustaría decirle a NHibernate que agregue los criterios como “OR”

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

Cualquier ayuda es apreciada

Está buscando las clases Conjunction y Disjunction , estas se pueden usar para combinar varias declaraciones para formar declaraciones OR y AND.

Y

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

O

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

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); 

Puede usar Restrictions.or , de tal manera que:

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

dónde:

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

Puede obtener más información sobre esto siguiendo la documentación de la interfaz Criteria de Hibernate , que es lo mismo que NHibernate.