带有 odata 和 $expand 的 Web Api 2.2

问题描述 投票:0回答:2

我正在使用 codefirst 和 odata。我已经建立了我的模型和关系。该查询似乎运行成功。我仅在扩展嵌套数据时使用 $expand 时遇到问题。我点击了 Microsoft 网站上的以下链接。所以我可以成功地完成以下操作

http://myurl.com/odata/catagories?$expand=Product

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

http://myurl.com/odata/catagories?$expand=Product/Supplier

我收到以下错误

URI 中指定的查询无效。找到一条遍历多个导航属性的路径。请重新表述查询,使每个扩展路径仅包含类型段和导航属性。

如果您访问上面的链接,评论中的某人似乎也遇到了同样的问题。我可以发誓我让它可以与以前版本的 odata 和 Web Api 一起使用。

c# asp.net-mvc-4 asp.net-web-api odata
2个回答
40
投票

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

http://myurl.com/odata/catagories?$expand=Product/Supplier

您更愿意使用

http://myurl.com/odata/catagories?$expand=Product($expand=Supplier)

0
投票

感谢@TYRONEMICHAEL 提供了正确的答案。

如果您使用

Microsoft.OData.Client
(在我们的例子中为
7.21.3
)并且更喜欢 LINQ,则可以按如下方式构建 URL 查询:

DataServiceQuery<Category> query = _context.Categories.Expand("Products($expand=Supplier)");
© www.soinside.com 2019 - 2024. All rights reserved.