Web Api 2.2与odata和$ expand

TYR*_*AEL 17 c# odata asp.net-mvc-4 asp.net-web-api

我正在使用codefirst和odata.我已经设置了我的模型和关系.该查询似乎成功运行.我只是在扩展嵌套数据时使用$ expand时遇到问题.我在微软的网站上关注了以下链接.所以我可以成功完成以下任务

http://myurl.com/odata/catagories?$expand=Product
Run Code Online (Sandbox Code Playgroud)

现在,如果我决定更深入地使用以下查询

http://myurl.com/odata/catagories?$expand=Product/Supplier
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

URI中指定的查询无效.找到遍历多个导航属性的路径.请重新调整查询,使每个展开路径仅包含类型段和导航属性.

如果您访问上面的链接,评论中的某些人似乎遇到了同样的问题.我可以发誓我使用之前版本的odata和Web Api.

TYR*_*AEL 32

找到这个问题后我找到了答案.@Rama提供了答案.我建议Microsoft在上面列出的链接上更新他们的文档.而不是

http://myurl.com/odata/catagories?$expand=Product/Supplier
Run Code Online (Sandbox Code Playgroud)

你宁愿使用

http://myurl.com/odata/catagories?$expand=Product($expand=Supplier)
Run Code Online (Sandbox Code Playgroud)

  • 斜线符号是odata v4:http://docs.oasis-open.org/odata/odata/v4.0/errata01/os/complete/part2-url-conventions/odata-v4.0-errata01-os-part2 -url的约定,complete.html#_Toc395267179 (3认同)
  • 形式语法适用于OData V3,但稍后适用于V4 (2认同)
  • 特别糟糕,因为微软声称它正在实施OData v4,而OData4客户端库将使用Slash方法发出请求.Microsoft不应更新文档,而应更新其嵌套扩展的实现. (2认同)