问题
在 Web API 上的 OData 4 服务中,从 .NET 客户端调用嵌套 $expand 的正确方法是什么?我们正在使用OData 客户端生成器。回到之前的 WCF 数据服务,我们可以调用 OData 3 服务.Expand("Customers/Orders")
。在带有 OData 4 的 Web API 中,如果您尝试,我们将无法再这样做并收到以下信息.Expand("Customers/Orders")
:
URI 中指定的查询无效。找到了一个遍历多个导航 > 属性的路径。请改写查询,使每个展开路径仅包含类型 >segments 和导航属性。
解决方法
我们可以通过调用 expand 来解决这个问题.Expand("Customers($expand=Orders)")
:在非嵌套的 $expand 场景中,我喜欢这样的 lambda 支持.Expand(d => d.Customers)
。.NET OData 4 客户端中是否有适当的方法来调用嵌套扩展而没有不幸的魔术字符串.Expand("Customers($expand=Orders)")
?如果没有,是否有像“客户/订单”这样更简洁的字符串模式可以使用?谢谢。