我正在使用 codefirst 和 odata。我已经建立了我的模型和关系。该查询似乎运行成功。我仅在扩展嵌套数据时使用 $expand 时遇到问题。我点击了 Microsoft 网站上的以下链接。所以我可以成功地完成以下操作
http://myurl.com/odata/catagories?$expand=Product
现在如果我决定使用以下查询更深入
http://myurl.com/odata/catagories?$expand=Product/Supplier
我收到以下错误
URI 中指定的查询无效。找到一条遍历多个导航属性的路径。请重新表述查询,使每个扩展路径仅包含类型段和导航属性。
如果您访问上面的链接,评论中的某人似乎也遇到了同样的问题。我可以发誓我让它可以与以前版本的 odata 和 Web Api 一起使用。
我找到这个问题后找到了答案。 @Rama 提供了答案。我建议微软在上面列出的链接上更新他们的文档。所以而不是
http://myurl.com/odata/catagories?$expand=Product/Supplier
您更愿意使用
http://myurl.com/odata/catagories?$expand=Product($expand=Supplier)
感谢@TYRONEMICHAEL 提供了正确的答案。
如果您使用
Microsoft.OData.Client
(在我们的例子中为 7.21.3
)并且更喜欢 LINQ,则可以按如下方式构建 URL 查询:
DataServiceQuery<Category> query = _context.Categories.Expand("Products($expand=Supplier)");