2008-12-22 11 views
19

NHibernate için bir ölçüt oluştururken, tüm ölçütler AND olarak eklenir.NHibernate için OR ifadeleri nasıl oluşturulur?

Örneğin

:

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

sonra sona sonuç

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

Ben

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

Herhangi bir yardım olduğu gibi kriterleri eklemek "VEYA" için NHibernate anlatmak istiyorum olacak Takdir edilen

cevap

48

Conjunction ve Disjunction sınıflarını arıyorsanız, bunlar OR ve AND ifadelerini oluşturmak için çeşitli ifadeleri birleştirmek için kullanılabilir.

VE

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

VEYA

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

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

:

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

Sen NHibernate aynıdır Criteria Interface documentation of Hibernate aşağıdaki bu konuda daha fazla bilgi edinebilirsiniz Sen öyle ki Restrictions.or, kullanabilirsiniz.

13

Kullanım 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);