我有一个多层应用程序,它以所有数据访问的存储库模式开始,并将 IQueryable 返回到服务层。包含所有业务逻辑的服务层将 IList 返回给控制器(注意:我将 ASP.NET MVC 用于 UI 层)。在数据访问层返回 IQueryable 的好处是它允许我的存储库非常简单,并且可以延迟数据库查询。但是,我在我的服务层中触发了数据库查询,以便我的单元测试更可靠,并且我没有让控制器灵活地重塑我的查询。但是,我' 最近遇到了几种情况,将查询的执行推迟到控制器会显着提高性能,因为控制器必须对特定于 UI 的数据进行一些预测。此外,随着 oData 之类的出现,我开始怀疑端点(例如 Web UI 或 Web API)是否应该直接与 IQueryable 一起工作。你怎么认为?是时候开始将 IQueryable 从服务层返回到 UI 层了吗?还是坚持使用 IList?你怎么认为?是时候开始将 IQueryable 从服务层返回到 UI 层了吗?还是坚持使用 IList?你怎么认为?是时候开始将 IQueryable 从服务层返回到 UI 层了吗?还是坚持使用 IList?
这个线程在这里:返回 IQueryable<T> 或不返回 IQueryable<T> 似乎保证将 IList 返回到 UI 层,但我想知道是否由于新兴技术和技术而发生了变化。