【发布时间】:2014-07-26 20:06:04
【问题描述】:
我有一个包含以下层的工作项目:
- DataAccess - 该项目涉及多个 DB 和 Web 服务。这一层定义了每个接口的接口。它公开了每个源的本机类型(数据库的 EF 类型、Web 服务的 SOAP 定义的类型等)。假设它公开了一个 EFProject 和 SoapProject。
- Repository - 该层缝合来自各种来源的结果以形成单个实体,并公开它。我们称之为 ModelProject
- 服务 - 将 REST 属性添加到实体(操作链接等)。这会公开一个 ProjectDTO。
- WebApi - 控制器直接吐出 ProjectDTO。
我正在尝试实现 OData,特别是对非常大的查询的结果进行分页。我看过很多例子,但它们似乎都是直接暴露源对象,然后将它们映射到控制器中的最终DTO。
我想以某种方式将 ODataQueryOptions 推送到存储库。这将允许我保留现有结构,并将查询逻辑传递给 SQL。我知道,因为 ODataQueryOptions 引用 ProjectDTO 类型,所以在该类型的对象可用之前无法应用它们。有没有办法将 ODataQueryOptions 从一种类型“翻译”为另一种类型?还有其他我不知道的方法吗?
【问题讨论】:
标签: entity-framework asp.net-web-api odata