C# 带有odata和$expand的Web Api 2.2
我将codefirst与odata一起使用。我已经建立了我的模型和关系。查询似乎正在成功运行。我仅在扩展嵌套数据时使用$expand时遇到问题。我从微软的网站上了解了以下内容。因此,我可以成功地执行以下操作C# 带有odata和$expand的Web Api 2.2,c#,asp.net-mvc-4,asp.net-web-api,odata,C#,Asp.net Mvc 4,Asp.net Web Api,Odata,我将codefirst与odata一起使用。我已经建立了我的模型和关系。查询似乎正在成功运行。我仅在扩展嵌套数据时使用$expand时遇到问题。我从微软的网站上了解了以下内容。因此,我可以成功地执行以下操作 http://myurl.com/odata/catagories?$expand=Product 现在,如果我决定使用以下查询进行更深入的研究 http://myurl.com/odata/catagories?$expand=Product/Supplier 我得到以下错误 URI中
http://myurl.com/odata/catagories?$expand=Product
现在,如果我决定使用以下查询进行更深入的研究
http://myurl.com/odata/catagories?$expand=Product/Supplier
我得到以下错误
URI中指定的查询无效。找到一个遍历多个导航属性的路径。请重新表述查询,使每个展开路径仅包含类型段和导航属性
如果你访问上面的链接,评论中的某人似乎也有同样的问题。我可以发誓,这是我用以前版本的odata和Web Api得到的。我在找到这个后找到了答案@拉玛提供了答案。我建议微软在上面列出的链接上更新他们的文档。所以不是
http://myurl.com/odata/catagories?$expand=Product/Supplier
你宁愿使用
http://myurl.com/odata/catagories?$expand=Product($expand=Supplier)
正式语法适用于OData V3,但后面的语法适用于v4。斜杠表示法是OData v4:特别糟糕,因为Microsoft声称它正在实现OData v4,而OData4客户端库将使用斜杠方法发出请求。微软应该更新嵌套扩展的实现,而不是更新文档。@JamieButler事实并非如此。根据标准,斜杠语法仅用于复杂类型(没有键的类型),Microsofts实现支持复杂类型。