Prevent NHibernate von Aliasing in ORDER BY
-
30-09-2019 - |
Frage
Ich habe eine Abfrage, die eine Order By-Klausel hat. Die generierte SQL von NHibernate sieht aus wie
ORDER BY coalesce(x.Company as x__.Company, y.Company) asc
Dies scheitert als 'als' in ORDER BY-Klausel in MS SQL Server ist nicht erlaubt. Gibt es eine Möglichkeit, Aliasing verhindern?
Die Kriterien Abfrage, dass ich geschrieben habe, sieht aus wie:
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);
Lösung
Projections.SqlFunction("coalesce",
NHibernateUtil.String,
Projections.Property("x.Company"),
Projections.Property("y.Company"));
die Parameter auf die coalesce (oder eine andere) Funktion separat übergeben werden (tatsächlich als params Array), nicht in eine ProjectionList verschmolzen.
Andere Tipps
Ich habe ähnliche lästige Probleme hat. Sie könnten eine Klasse von PropertyProjection abzuleiten sind und die Inplace von Projections.Property () verwenden. Überschreiben der ToSqlString Methode und die Streifen die AS-Klausel aus.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow