这听起来很简单(也许我错过了这里显而易见的)但我找不到解决方案.我知道我可以查询实体并返回一个或多个直接子实体执行此操作:
var query = from c in Service.Clients.Expand("Addresses,Comments,PhoneNumbers")..
Run Code Online (Sandbox Code Playgroud)
我想能做的是做3个等级(孩子的孩子),让我们说"国家 - >省 - >城市"或"品牌 - >家庭 - >模型"
我试图扩展所有实体,但它失败了
var query = from c in Service.Brands.Expand("Families,Models").. //fails,
//which even makes some sense, since Models is a Child of Family, not Brand
var query = from c in Service.Brands.Expand("Families").. //this works,
//but Family.Models is empty
Run Code Online (Sandbox Code Playgroud)
有没有办法在一个查询中执行此操作,还是必须在两个单独的查询中拆分它?
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如下所示:
在我的情况下,是否可以使用$ select表示中间的表格Orders?
在OD扩展查询中的OData V4中,您可以将其作为选项嵌套:
1)$扩大
http://services.odata.org/V4/OData/OData.svc/Categories?$expand=Products($expand=ProductDetail)
Run Code Online (Sandbox Code Playgroud)
2)$的水平
实体($ expand = ChildItems($ level = x))其中ChildItem是相同类型的实体
3)$选择
http://services.odata.org/V4/OData/OData.svc/Categories?$expand=Products($select=Price)&$select=Name,Products
Run Code Online (Sandbox Code Playgroud)
我想像这样扩展ProductDetail但当然它不起作用
http://services.odata.org/V4/OData/OData.svc/Categories?$expand=Products($expand=ProductDetail&$select=Price,ProductDetail)&$select=Name,Products
Run Code Online (Sandbox Code Playgroud)
这个电话得到了
指定了查询参数'$ select',但应该只指定一次
所以你会认为你只能在主要实体上选择$,但是#3的情况完美无缺.
我知道我可以重写我的查询以实现我的目标,但我想知道这是否可行.
谢谢,亚历山德罗