WebAPI OData前端与WCF数据服务后端



在我正在进行的项目中,需要以下架构(简化):

[WebAPI]->[WCF->实体框架]->[数据库]

我看过很多演示,在这些演示中,您可以使用OData语法直接通过WebAPI公开实体模型。

不过,我想知道是否有可能在WebAPI OData服务(前端服务器)上公开WCF OData服务,从而获得OData过滤的好处。

例如:当我在WebAPI中筛选国家/地区时,我不想从WCF获得所有客户(http://domain.com/api/Customers?$filter=country eq"USA")。

谢谢!

  1. 如果您指的是WCF数据服务,那么它已经是一个支持筛选器的OData服务端点。

    例如:

    http://services.odata.org/OData/OData.svc/Categories?$filter=名称eq"食品"

  2. 如果您指的是由EF后台的WCF服务,那么您需要使WebAPI OData服务成为WCF服务的代理。只要您可以编写客户端代码来使用WCF服务,这是可行的。

    请参阅:http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataServiceSample/ODataService/

    您可以简单地替换ProductsController::Get中的代码片段,从WCF服务中检索数据,然后在那里返回数据。[EnableQuery]属性将使查询选项可用。

最新更新