Prevenir NHibernate de aliasing en ORDER BY
-
30-09-2019 - |
Pregunta
Tengo una consulta que tiene una cláusula Order By. El SQL generado, desde miradas NHibernate como
ORDER BY coalesce(x.Company as x__.Company, y.Company) asc
Esta falla como 'como' no está permitido en la cláusula ORDER BY en MS SQL Server. ¿Hay alguna manera de evitar el aliasing?
La consulta criterios que he escrito el siguiente aspecto:
var orderBy = Projections.SqlFunction("coalesce", NHibernateUtil.String,
Projections.ProjectionList()
.Add(Projections.Property("x.Company"))
.Add(Projections.Property("y.Company")));
var order = Order.Asc(orderBy);
criteria.AddOrder(order);
Solución
Projections.SqlFunction("coalesce",
NHibernateUtil.String,
Projections.Property("x.Company"),
Projections.Property("y.Company"));
Los parámetros a la coalesce (o cualquier otro) función se debe pasar por separado (en realidad, como una matriz params), no se combinó en un ProjectionList.
Otros consejos
he tenido problemas molestos similares. Puede que tenga que derivar una clase de PropertyProjection y el uso que inplace de Projections.Property (). Reemplazar el método ToSqlString y tira hacia fuera la cláusula AS.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow