Предотвратить псевдоним nhibernate
-
30-09-2019 - |
Вопрос
У меня есть запрос, который имеет предложение по пункту. Сгенерированный 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.
Не связан с StackOverflow