Estoy tratando de crear una cláusula not in
con la API de criterios NHibernate utilizando NHLambdaExtensions. La lectura de la documentación que era capaz de poner en práctica la cláusula in
haciendo¿Cómo expreso "no en" usando lambdas?
.Add(SqlExpression.In<Zone>(z => zoneAlias.ZoneId, new int[] { 1008, 1010 }))
Sin embargo, cuando se envuelve alrededor de SqlExpression.Not
consigo el error
Error 5 The best overloaded method match for 'NHibernate.LambdaExtensions.SqlExpression.Not<oms_dal.Models.Zone>(System.Linq.Expressions.Expression<System.Func<oms_dal.Models.Zone,bool>>)' has some invalid arguments
Error 6 Argument '1': cannot convert from 'NHibernate.Criterion.ICriterion' to 'System.Linq.Expressions.Expression<System.Func<oms_dal.Models.Zone,bool>>'
estoy usando esta pieza de código
.Add(SqlExpression.Not<Zone>(SqlExpression.In<Zone>(x => zoneAlias.ZoneId, new int[] { 1008, 1010 })))
¿Cómo puedo lograr esto? Uso de la API Criterios regulares que era capaz de hacer esto
.Add(Restrictions.Not(Restrictions.In("z.ZoneId", new[] { 1008, 1010 })))
correcta, que quiere una lambda booleano. Usando su código, NH ahora dice 'No se pudo determinar el tipo de miembro de nuevo [] {1008, 1010} .Contiene (z.ZoneId)' cuando ejecuto la consulta. – Mike
El nuevo código provisto ahora siempre da el error "No se pudo determinar el miembro de ...". La solución más sencilla y fea que puedo pensar es simplemente hacer '.Add (SqlExpression.Not (() => zoneAlias.ZoneId == 1008))' para todo. – Mike