Empêcher NHibernate de aliasing ORDER BY
-
30-09-2019 - |
Question
J'ai une requête qui a une clause Par ordonnance. Le SQL généré des regards NHibernate comme
ORDER BY coalesce(x.Company as x__.Company, y.Company) asc
échoue 'que' est pas autorisé dans la clause ORDER BY dans MS SQL Server. Est-il possible que je peux empêcher l'aliasing?
La requête de critères que je l'ai écrit ressemble à:
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);
La solution
Projections.SqlFunction("coalesce",
NHibernateUtil.String,
Projections.Property("x.Company"),
Projections.Property("y.Company"));
Les paramètres à la coalescence (ou tout autre) fonction doit être passée séparément (en fait, comme un réseau de params), non fusionnées en une ProjectionList.
Autres conseils
J'ai eu des problèmes similaires ennuyeux. Vous pourriez avoir à dériver une classe de PropertyProjection et d'utiliser cette inplace de Projections.Property (). Substituer la méthode ToSqlString et dénuder la clause AS.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow