EntityFrameworkを使用してデータストアにアクセスするASP.NET Core WebAPIを開発しています。サポートが必要なものの1つは、並べ替えとフィルタリングです。
HTTPクエリ文字列には、フィルタリングと並べ替えのさまざまな条件が入力されると想定しています。しかし、私はかなり複雑なフィルタリング/並べ替え機能の実際の例、フィルターと並べ替えオブジェクトの構築方法、およびデータベースからデータを取得するためのEFクエリの構築方法をいくつか見てみたいと思います。
私はこのトピックについてかなりの検索を行いましたが、見つけることができるのは複雑なエンタープライズレベルのアプリケーションには適さない些細な例です。
最後に、ODataには興味がありません。これは標準のREST APIである必要があります。
このブログ投稿 は、適切なREST準拠のクエリ文字列を示しています。
_?sort=created,modified
_
そして
_?page=2&page_entries=10
_
カスタムクエリを作成するには、カスタムSQL文字列を作成し、EFメソッドを使用してデータベースに送信できます ExecuteQuery()
、またはLinqを使用して必要な Where()
または OrderBy()
条件。
Linqを使用する場合は、IQueryable
ステートメントを使用してif
に句を選択的に追加するか、 Dynamic Linq を使用して、クエリ文字列を直接、または Predicate Builder を使用してカスタム条件述語を作成します。
参考文献
ASP.NET MVCアプリケーションでのエンティティフレームワークによる並べ替え、フィルタリング、およびページング