1

我有一个包含 Order By 子句的查询。NHibernate 生成的 SQL 看起来像

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

这会失败,因为 MS SQL Server 的 Order by 子句中不允许使用“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);
4

2 回答 2

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

coalesce(或任何其他)函数的参数应单独传递(实际上,作为 params 数组),而不是合并到 ProjectionList 中。

于 2010-09-03T21:09:46.020 回答
0

我也遇到过类似的烦人问题。您可能必须从 PropertyProjection 派生一个类并使用它来代替 Projections.Property()。覆盖 ToSqlString 方法并去掉 AS 子句。

于 2010-09-03T20:03:18.347 回答