OData V4 - 扩展和选项(过滤器,顶部,...)

时间:2014-07-18 09:02:34

标签: asp.net-web-api odata wcf-data-services

我使用OData V4和ASP WebApi。我会过滤扩展的集合,因为OData的新版本可以做(http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html - 示例90),但在我的情况下,过滤器选项没有效果。

我还尝试使用Nortwhind服务和TripPin服务做同样的事情。它适用于TriPin服务,但不适用于Northwind服务。

这里,我使用过的请求:

我的服务 api / odata / Customers(19037)?$ expand = orders($ filter = id + eq + 1796) - > 不能工作

Northwind服务 http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$ expand =订单($ filter =订单ID + eq + 10643) - > 不能工作

TripPin服务 http://services.odata.org/V4/TripPinServiceRW/People?$ expand = Trips($ filter = TripId + eq + 1001) - > 工作

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我重现了这个问题,发现$ expand内的$ select效果很好。我认为这是一个缺陷并为它打开了一个错误:https://aspnetwebstack.codeplex.com/workitem/2070

答案 1 :(得分:1)

这是我们现在不支持的功能。

根本原因是在翻译$ expand时会忽略内联$ filter。

检查SelectExpandBinder.cs的方法“GetPropertiesToExpandInQuery”:

https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.OData/OData/Query/Expressions/SelectExpandBinder.cs

仅返回expandItem.SelectAndExpand,而忽略其他选项。

所以现在只有$ select和$ expand扩展内部工作。

我之前曾调查过如何修复它,但由于该问题尚未获得批准, 请投票金福开放的问题,以吸引领导团队的更多关注。