質問

句ごとの注文があるクエリがあります。 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句を取り除きます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top