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);
Était-ce utile?

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