oData v4 (6.1.0) 在 $expand 中嵌套了 $filter
oData v4 (6.1.0) nested $filter in $expand
我有一个 asp.net 4.5 Web Api oData v4 服务,它运行得非常好,但我今天遇到了 $expand 中嵌套 $filters 的问题。
它说 here
that OData V4 supports nested filters in $expand. The request below
return People and all their trips with Name "Trip in US".
GET serviceRoot/People?$expand=Trips($filter=Name eq 'Trip in US')
它展示了一个很好的数据示例。
Web API for oData v4 Docs here
中还有编码示例
我有一个这样的 HTTP 调用:
serviceRoot/Languages?$expand=translations
其中 returns 一个带有扩展翻译的语言列表,我可以用这个过滤掉顶级列表:
serviceRoot/Languages?$expand=translations&$filter=isoLanguageShortName eq 'en'
但是,我不能用这个过滤扩展的翻译:
serviceRoot/Languages?$expand=translations($filter=languageName eq 'English')
那个调用似乎与上面引用中的调用相同,对我的数据的影响应该与他们的相同。
有谁知道我错在哪里?我是否需要在我的 ASP.NET 代码中设置一些东西才能工作(比如我们需要将 MaxExpansionDepth 添加到 EnableQueryAttribute 以查询比两层更深的层次)?
这是一个版本控制问题。 5.5 版增加了对的支持。我测试了 sample with v5.5.1,它确实有效。
@lukkea 确认他使用的是 5.4.0。
(标题中表示的版本6.1.0对应于odata core库,它是odata web api库Microsoft.AspNet.OData的依赖项)
我有一个 asp.net 4.5 Web Api oData v4 服务,它运行得非常好,但我今天遇到了 $expand 中嵌套 $filters 的问题。
它说 here
that OData V4 supports nested filters in $expand. The request below return People and all their trips with Name "Trip in US".
GET serviceRoot/People?$expand=Trips($filter=Name eq 'Trip in US')
它展示了一个很好的数据示例。
Web API for oData v4 Docs here
中还有编码示例我有一个这样的 HTTP 调用:
serviceRoot/Languages?$expand=translations
其中 returns 一个带有扩展翻译的语言列表,我可以用这个过滤掉顶级列表:
serviceRoot/Languages?$expand=translations&$filter=isoLanguageShortName eq 'en'
但是,我不能用这个过滤扩展的翻译:
serviceRoot/Languages?$expand=translations($filter=languageName eq 'English')
那个调用似乎与上面引用中的调用相同,对我的数据的影响应该与他们的相同。
有谁知道我错在哪里?我是否需要在我的 ASP.NET 代码中设置一些东西才能工作(比如我们需要将 MaxExpansionDepth 添加到 EnableQueryAttribute 以查询比两层更深的层次)?
这是一个版本控制问题。 5.5 版增加了对的支持。我测试了 sample with v5.5.1,它确实有效。
@lukkea 确认他使用的是 5.4.0。
(标题中表示的版本6.1.0对应于odata core库,它是odata web api库Microsoft.AspNet.OData的依赖项)