Вопрос

У меня есть запрос, который имеет предложение по пункту. Сгенерированный SQL от Nibernate выглядит как

 ORDER BY coalesce(x.Company as x__.Company, y.Company) asc 

Это не удается как «AS» не допускается в пункте по порядку в MS SQL Server. Есть ли способ, которым я могу предотвратить псевдонимую?

Критерии запросит, что я написал, выглядит как:

 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);
Это было полезно?

Решение

Projections.SqlFunction("coalesce",
                        NHibernateUtil.String,
                        Projections.Property("x.Company"),
                        Projections.Property("y.Company"));

Параметры к функции Coalesce (или любую другую) следует передавать отдельно (фактически, как массив параметров), не объединенный в проекционный список.

Другие советы

У меня были подобные раздражающие проблемы. Возможно, вам придется вывести класс от PropertyProjection и использовать, которые не имеют прогнозов .property (). Переопределить метод TOSQLSTRING и положить предложение как AS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top