【问题标题】:oData v4 (6.1.0) nested $filter in $expandoData v4 (6.1.0) 在 $expand 中嵌套 $filter
【发布时间】:2015-07-29 04:20:02
【问题描述】:

我有一个运行良好的 asp.net 4.5 Web Api oData v4 服务,但我今天在 $expand 中遇到了嵌套 $filters 的问题。

上面写着here

OData V4 支持 $expand 中的嵌套过滤器。下面的请求 以“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

它返回一个语言列表及其扩展翻译,我可以用这个过滤顶级列表:

serviceRoot/Languages?$expand=translations&$filter=isoLanguageShortName eq 'en'

但是,我不能用这个过滤扩展的翻译:

serviceRoot/Languages?$expand=translations($filter=languageName eq 'English')

该调用似乎与上面引用中的调用相同,并且对我的数据的影响应该与他们的相同。

有人知道我哪里出错了吗?我是否需要在我的 ASP.NET 代码中设置一些内容才能使其正常工作(比如我们需要将 MaxExpansionDepth 添加到 EnableQueryAttribute 以查询超过两个级别的深度)?

【问题讨论】:

  • 不会是版本问题吧? v5.5 添加了此支持。我用v5.5.1 测试了sample,它实际上正在工作。您使用的是哪个版本(6.1.0 尚不存在)?
  • 非常感谢@Fabian。我有三个带有报告版本 6.1.0 的 oData 图标的库,然后是您链接到的库,我现在可以看到报告 5.4.0,我猜这是主库!您的评论刚刚为这将是漫长的一天开了个好头。再次感谢。 :-)
  • 有效吗?我可以添加一个答案来关闭主题吗?
  • 请做,我会将其标记为已回答。

标签: c# asp.net asp.net-web-api odata


【解决方案1】:

这是一个版本问题。 5.5 版增加了对 的支持。我用v5.5.1 测试了sample,它确实在工作。

@lukkea 确认他使用的是 5.4.0。

(标题中的6.1.0版本对应odata core库,是odata web api库Microsoft.AspNet.OData的依赖)

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2012-02-28
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多