2010-04-25 7 views
14

Tengo una enumeración de tipo int en mi entidad, UserStatus.Cómo hacer un NotEqual en NHibernate

Deseo obtener todos los usuarios donde el Estado de usuario <> Cancelado.

Así:

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

Lo anterior es igual proa, tengo que conseguir no es igual.

Respuesta

40

Con gracias a Alex lo uso para NH2 y hasta:

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

para versiones anteriores esto sería:

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

'Expression' es semi-obsoleto. Reemplace su uso con 'Restrictions' – Alex

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

Intente agregar algunos comentarios sobre por qué esto funcionará –

+0

esto se asignó a [... y no (propertyName =?)] En mi caso y trabajó con Oracle –

Cuestiones relacionadas