我的查询有一个按子句的订单。 NHIBERNATE产生的SQL看起来像

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

这是在MS SQL Server中的子句中不允许按顺序进行的“ AS”失败。有什么办法可以防止别名?

我写的标准查询看起来像:

 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"));

合并功能的参数应分别传递(实际上是作为参数数组),而不是合并到投影列表中。

其他提示

我有类似的烦人问题。您可能必须从propertyprodoction中得出一个类,并使用Projections.property()的Inther。覆盖TOSQLSTRING方法并剥离AS子句。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top