Nhibernateが順番にエイリアシングを防ぐ
-
30-09-2019 - |
質問
句ごとの注文があるクエリがあります。 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"));
合体(またはその他の)関数のパラメーターは、プロジェクションリストにマージされるのではなく、個別に(実際にはパラメージアレイとして)渡す必要があります。
他のヒント
同様の迷惑な問題がありました。 PropertyProjectionからクラスを導き出し、Projections.Property()の場所を使用する必要がある場合があります。 tosqlStringメソッドをオーバーライドし、as句を取り除きます。
所属していません StackOverflow