扩展集合对象的 OData 客户端 v3 到 v4 更新方法
OData client v3 to v4 update approach for Expand object of collection
我们使用第三方从 OData v3 更新到 v4 的后端。这意味着我们也必须更新我们的软件。
现在我面临的问题是集合在 v4 中的工作方式与在 v3 中的不同。例如,我用于 GET ~/OData/Orders
和 OrderItems
的代码以及在 OrderItems
集合中扩展对象 Product 的代码是:
SomeDataServiceContext.Orders.Expand("OrderItems").Expand("OrderItems/Product").Take(10)
现在使用 OData v4,我可以扩展 OrderItems
,但扩展 OrderItems
集合中的 Product 对象不再有效。这是我现在使用的代码:
SomeDataServiceContext.Orders.Expand(Function(x) x.OrderItems).Take(10)
但是如您所见,这确实检索了 OrderItems
的集合,但没有在 OrderItems
集合中展开 Product 对象。然而,OrderItems
集合确实包含 属性 ProductId
那么在这种情况下,正确的方法是什么:
- 查找 v4 中是否有获取嵌套 Expands 的新方法
- 查询端点
SomeDataServiceContext.Products
得到对应的产品
- 建议?
我对 OData 的了解是初级到中级水平,所以要温和 ;-)
只有当 link 是单数时,客户端才支持嵌套扩展的 lambda 语法,因为 Order.OrderItems
是一个 集合 您可以使用扩展方法的字符串变体:
SomeDataServiceContext.Orders.Expand("OrderItems($expand=Product)").Take(10)
You will notice here, expansion syntax is one of the breaking changes in URL parsing between OData v3 and v4.
我们使用第三方从 OData v3 更新到 v4 的后端。这意味着我们也必须更新我们的软件。
现在我面临的问题是集合在 v4 中的工作方式与在 v3 中的不同。例如,我用于 GET ~/OData/Orders
和 OrderItems
的代码以及在 OrderItems
集合中扩展对象 Product 的代码是:
SomeDataServiceContext.Orders.Expand("OrderItems").Expand("OrderItems/Product").Take(10)
现在使用 OData v4,我可以扩展 OrderItems
,但扩展 OrderItems
集合中的 Product 对象不再有效。这是我现在使用的代码:
SomeDataServiceContext.Orders.Expand(Function(x) x.OrderItems).Take(10)
但是如您所见,这确实检索了 OrderItems
的集合,但没有在 OrderItems
集合中展开 Product 对象。然而,OrderItems
集合确实包含 属性 ProductId
那么在这种情况下,正确的方法是什么:
- 查找 v4 中是否有获取嵌套 Expands 的新方法
- 查询端点
SomeDataServiceContext.Products
得到对应的产品 - 建议?
我对 OData 的了解是初级到中级水平,所以要温和 ;-)
只有当 link 是单数时,客户端才支持嵌套扩展的 lambda 语法,因为 Order.OrderItems
是一个 集合 您可以使用扩展方法的字符串变体:
SomeDataServiceContext.Orders.Expand("OrderItems($expand=Product)").Take(10)
You will notice here, expansion syntax is one of the breaking changes in URL parsing between OData v3 and v4.