我有一个包含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);
答案 0 :(得分:2)
Projections.SqlFunction("coalesce",
NHibernateUtil.String,
Projections.Property("x.Company"),
Projections.Property("y.Company"));
coalesce(或任何其他)函数的参数应该单独传递(实际上,作为params数组),而不是合并到ProjectionList中。
答案 1 :(得分:0)
我遇到过类似烦人的问题。您可能必须从PropertyProjection派生一个类并使用它来取代Projections.Property()。重写ToSqlString方法并去除AS子句。