Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有odata和$expand的Web Api 2.2_C#_Asp.net Mvc 4_Asp.net Web Api_Odata - Fatal编程技术网

C# 带有odata和$expand的Web Api 2.2

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中

我将codefirst与odata一起使用。我已经建立了我的模型和关系。查询似乎正在成功运行。我仅在扩展嵌套数据时使用$expand时遇到问题。我从微软的网站上了解了以下内容。因此,我可以成功地执行以下操作

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实现支持复杂类型。