1

OrderBy句を持つクエリがあります。NHibernateから生成されたSQLは次のようになります

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

これは、MSSQLServerのOrderby句で「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"));

合体 (またはその他の) 関数へのパラメーターは、ProjectionList にマージするのではなく、個別に (実際には params 配列として) 渡す必要があります。

于 2010-09-03T21:09:46.020 に答える
0

私も同様の厄介な問題を抱えています。PropertyProjectionからクラスを派生させ、Projections.Property()の代わりにそれを使用する必要がある場合があります。ToSqlStringメソッドをオーバーライドし、AS句を削除します。

于 2010-09-03T20:03:18.347 に答える