すべてのデータ アクセスのリポジトリ パターンから始まるマルチレイヤー アプリケーションがあり、サービス レイヤーに IQueryable を返します。すべてのビジネス ロジックを含むサービス レイヤーは、IList をコントローラーに返します (注: UI レイヤーには ASP.NET MVC を使用しています)。データ アクセス レイヤーで IQueryable を返す利点は、リポジトリを非常にシンプルにし、データベース クエリを延期できることです。ただし、サービス レイヤーでデータベース クエリをトリガーしているため、単体テストの信頼性が向上し、クエリを再形成する柔軟性をコントローラーに与えていません。しかし、私は' 最近、コントローラーが UI 固有のデータに対していくつかのプロジェクションを実行する必要があったため、クエリの実行をコントローラーに延期する方がパフォーマンスが大幅に向上するという状況に遭遇しました。さらに、oData などの出現により、エンドポイント (Web UI や Web API など) が IQueryable と直接連携する必要があるかどうか疑問に思い始めていました。あなたの考えは何ですか?サービス層から UI 層に IQueryable を返し始める時が来ましたか? それとも IList に固執しますか? あなたの考えは何ですか?サービス層から UI 層に IQueryable を返し始める時が来ましたか? それとも IList に固執しますか? あなたの考えは何ですか?サービス層から UI 層に IQueryable を返し始める時が来ましたか? それとも IList に固執しますか?
このスレッドはこちら: To return IQueryable<T> or not return IQueryable<T> は、IList を UI レイヤーに返すことを保証しているように見えますが、新しいテクノロジーやテクニックのために状況が変化しているのではないかと考えていました。