Impedire NHibernate da aliasing in ORDER BY
-
30-09-2019 - |
Domanda
Ho una domanda che ha una clausola ORDER BY. L'SQL generato da sguardi NHibernate come
ORDER BY coalesce(x.Company as x__.Company, y.Company) asc
Questa non come 'come' non è ammesso nel clausola ORDER BY in MS SQL Server. C'è un modo per evitare aliasing?
La query criteri che ho scritto si presenta così:
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);
Soluzione
Projections.SqlFunction("coalesce",
NHibernateUtil.String,
Projections.Property("x.Company"),
Projections.Property("y.Company"));
I parametri per la coalesce (o qualsiasi altro) dovrebbe essere passato separatamente (in realtà, come array params), non fusi in un ProjectionList.
Altri suggerimenti
Ho avuto problemi fastidiosi simili. Potrebbe essere necessario derivare una classe da PropertyProjection e l'uso che inplace di Projections.Property (). Override del metodo ToSqlString e togliere i clausola AS.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow