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);
È stato utile?

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