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);
¿Fue útil?

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
scroll top