使用 Northwind v2 oData 服务,出于学习目的,我遇到了以下问题:
Employees
实体与 Orders
实体相关。使用扩展参数我可以获得所有相关的Orders
。这里我想用一个过滤器来过滤,比方说,CustomerID
。我一直在尝试按照不同的文档做这样的事情,但可以做到这一点:
https://services.odata.org/V2/Northwind/Northwind.svc/Employees?$expand=Orders&$filter=Orders/CustomerID eq 'ERNSH'
我们收到以下错误:“System.Data.Objects.DataClasses.EntityCollection”类型中不存在属性“CustomerID”1[[ODataWeb.Northwind.Model.Order, ODataWeb, Version=6.0.0.0, Culture=neutral, PublicKeyToken =69c3241e6f0468ca]]
CustomerID 应该存在于
Order
实体中,因为此调用会返回预期结果:
https://services.odata.org/V2/Northwind/Northwind.svc/Orders?$filter%20=CustomerID%20eq%20%27ERNSH%27
如何在嵌套的 entityType 上应用过滤器?
如果
Orders
是一个集合,您可以在过滤器查询中使用any
。
https://services.odata.org/V2/Northwind/Northwind.svc/Employees?$expand=Orders&$filter=Orders/any(c:c/CustomerID eq 'ERNSH')
其他选择是在
filter
内使用
expand
https://services.odata.org/V2/Northwind/Northwind.svc/Employees?$expand=Orders($filter=CustomerID eq 'ERNSH')