1

EntityFrameworkとSQLストアに支えられた標準のWebApiコントローラーにクエリを実行するBreezeJsを利用するアプリケーションがあります。order by句を使用する場合、NULLと空の文字列値が常に最後に並べ替えられるようにします(昇順と降順の両方)。

SQLまたはEFサーバー側でさえ、これは難しい作業ではありません。ただし、これを実現する方法を示すBreezeJsのドキュメントを見つけることができませんでした。

理想的な解決策は、EFコンテキストを変更する方法であるため、クエリがDBにヒットする前に、OrderByが検出された場合のデフォルトの動作になります。それができない場合は、Breeze自体で、結果でnullがどのように処理されるかを指定する方法を見逃している可能性があります。

最悪の場合、クライアント側で2つの個別のクエリを記述し、結果をマージする必要があります。1つは指定された列に値がある場合とない場合です。

提案?

4

1 に答える 1

1

これは興味深い質問です。

Breezeには現在、LocalQueryComparisonOptionsというクラスがあり、クライアント側の順序で大文字と小文字が区別されるかどうか、および文字列の比較がSQL92に準拠するかどうかを制御するために使用できます。ここでの考え方は、このクラスを使用して、選択したサーバー実装で使用される順序付けルールに一致させる必要があるということです。

おそらく独自の順序付け関数を提供することによって、クエリのローカル順序付けを完全に制御するオプションも必要なようです。その場合は、これをそよ風のユーザーボイスに追加して投票してください。これは非常に合理的であるように思われ、十分な票を獲得した場合は、製品に追加するのが理にかなっていると思います。

EF(または使用しているバックエンド)がこれらの同じ順序付け規則に準拠していることを確認する必要があることに注意してください。

また、好奇心から、EFが常にnullをこのように注文するようにするにはどうすればよいですか?

于 2013-02-06T20:32:03.450 に答える