2010-04-25 12 views
14

Kullanıcı kimliğimde, UserStatus'ta bir int türünde numaralandırma var.NHibernate'e NotEqual nasıl yapılır

Tüm kullanıcıları UserStatus'un <> İptal edildiğini görmek istiyorum. Yani

:

Session.CreateCriteria(typeof(User)) 
.Add(Expression.Eq("UserStatus", (int)UserStatus.Cancelled) 
.UniqueResult<User>(); 

yukarıda fore eşittir ben eşit değil almak gerekir. Alex teşekkürler

cevap

40

NH2 ve yukarı kullanabilir:

Session.CreateCriteria(typeof(User)) 
.Add(Restrictions.Not(Restrictions.Eq("UserStatus", (int)UserStatus.Cancelled)) 
.UniqueResult<User>(); 

eski sürüm için bu olacaktır:

Session.CreateCriteria(typeof(User)) 
.Add(Expression.Not(Expression.Eq("UserStatus", (int)UserStatus.Cancelled)) 
.UniqueResult<User>(); 
+1

'Expression' yarı kaldırılmıştır. Kullanımını "Restrictions" – Alex

2
.Add(!Restrictions.Eq(propertyName, value)); 
+2

ile değiştirin. Bunun neden işe yaradığı ile ilgili bazı yorumlar eklemeye çalışın –

+0

Bu durum benim için [... ve değil (propertyName =?)] Ile eşleştirildi ve Oracle ile çalıştı –