web api odata服务 - 返回复杂类型

时间:2012-08-29 09:14:55

标签: asp.net-web-api

我想创建web api odata服务,该服务返回由集合数据成员和此服务返回的其他成员组成的reault类型:

http://services.odata.org/OData/OData.svc/Suppliers?$ filter =地址/城市eq'Redmond'

如您所见,结果类型由集合数据成员和其他成员

组成

任何人都可以给我一个样品怎么做?

我无法成功创建这种复杂类型,并且能够通过值

过滤集合项

因为yuo可以在此查询中看到它返回所有结果而不过滤项目

services.odata.org/OData/OData.svc/Suppliers

我希望能够像这样过滤这种类型:

services.odata.org/OData/OData.svc/Suppliers?$filter=Address/City eq'Redmond'

在这个查询中,我设法过滤了集合成员项目,并仍然返回其他数据成员。

2 个答案:

答案 0 :(得分:0)

Odata支持隐含在asp.net webapi RC中。 您只需从Actions返回IQueryable并使用[QueryableAttribute]标记它。 只有这个支持基于查询字符串的数据过滤。

当我看到[QueryableAttribute]没有在RTM中构建时,我有点失望。

在RTM中,它可以作为单独的软件包在Nuget上以预览/ alpha格式提供给Microsoft.AspNet.WebApi.OData。全面发布将于今年秋季晚些时候推出你可以从这里获取它(http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData)。有一个很好的概述帖子(http://blogs.msdn.com/b/alexj/archive/2012/08/15/odata-support-in-asp-net-web-api.aspx)

答案 1 :(得分:0)

如果您只想实现以下过滤器:services.odata.org/OData/OData.svc/Suppliers?$filter=Address/City eq'Redmond'

请查看http://aspnet.codeplex.com/SourceControl/changeset/view/903afc4e11df#Samples%2fNet4%2fCS%2fWebApi%2fODataServiceSample%2fReadMe.txt

上的示例

它有一个具有可查询属性的供应商和地址模型。它应该使用相同的$ filter查询。