【问题标题】:Odata - nested $select and $expand [duplicate]Odata - 嵌套 $select 和 $expand [重复]
【发布时间】:2015-07-30 03:49:35
【问题描述】:

http://services.odata.org/V4/Northwind/Northwind.svc/

我正在尝试一次获取所有Customers、它们的Orders 和相应的Order_Details,并为此使用嵌套的$expand。要查询我正在使用以下链接的数据:http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$expand=Orders($expand=Order_Details)

现在我正在尝试使用$select 限制数据。问题是我找不到正确的语法来为中间表使用$select - Orders。我可以将它应用到上表 - Customers 和底部表 - Order_Details,如下所示:

http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$select=CustomerID&$expand=Orders($expand=Order_Details($select=UnitPrice))

是否可以将 $select 也用于两者之间的表,在我的情况下是 Orders

【问题讨论】:

  • 您真的需要将这些数据作为嵌套对象获取吗?根据经验,我发现在大多数情况下,我们需要对象树的聚合视图。我开发了 LINQ 扩展方法QueryByCube 来构建这种使用 OData 协议可查询的服务。在此处阅读更多信息:AdaptiveLINQ
  • @nlips 我不能使用 LINQ,我们仍然受限于 .NET 2.0。你能给我一个聚合视图的例子吗?基本上,我试图用尽可能少的网络请求来获取所有这些数据
  • 我假设使用 Northwind.svc 是例如。我猜您将开发自己的 OData 服务并使用 LINQ 服务器端。聚合视图的想法是呈现一个实体集,其中每个字段都由原生实体模型中的表达式构建。 某些字段表示为几个项目的聚合。例如,我们可以通过简单地发出请求来获得每个客户按日期的总销售额MyService.svc?$select=CustomerID,OrderDate,TotalSales.
  • @nlips 我正在编写一个将使用现有 OData 服务的数据提供程序,因此我必须实现“最坏情况”:)

标签: select entity odata expand


【解决方案1】:

【讨论】:

  • 圣鳄梨酱一个分号...浪费了几个小时。愿意分享一些源文档吗?
  • @Jerther 如您所见,我已经回答了我自己的问题。我也为此浪费了几个小时,只是偶然地找到了解决方案。现在不确定,但在撰写本文时,我在官方文档中找不到这个。
  • 有提及,但没有例子。分号一词在整个文档中只出现一次:docs.oasis-open.org/odata/odata/v4.0/…
猜你喜欢
  • 2022-11-30
  • 2015-04-04
  • 2017-02-27
  • 2015-07-29
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
相关资源
最近更新 更多