And*_*eas 21 linq wcf-data-services odata
这听起来很简单(也许我错过了这里显而易见的)但我找不到解决方案.我知道我可以查询实体并返回一个或多个直接子实体执行此操作:
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)
有没有办法在一个查询中执行此操作,还是必须在两个单独的查询中拆分它?
Gen*_*e C 28
以下语句应返回您要查找的内容:
var query = from c in Service.Brands.Expand("Families/Models")
Run Code Online (Sandbox Code Playgroud)
这将运行以下odata查询:
.../OData.svc/Brands?$expand=Families/Models
Run Code Online (Sandbox Code Playgroud)
以下是一些odata文档的链接:
$ expand查询选项的语法是以逗号分隔的导航属性列表.此外,每个导航属性后面都可以跟一个正斜杠和另一个导航属性,以便识别多级关系.
ram*_*ama 25
在ASP.NET OData v4中,URL约定似乎已更改.就是现在:
~/Brands?$expand=Families($expand=Models)
Run Code Online (Sandbox Code Playgroud)
您还可以在子实体中选择所需的内容.
例如,如果您只想要品牌系列标识符:
~/Brands?$expand=Families($select=Id)
Run Code Online (Sandbox Code Playgroud)
此外,如果您只想要品牌系列型号的标识符,您可以这样做:
~/Brands?$expand=Families($expand=Models($select=Id))
Run Code Online (Sandbox Code Playgroud)
...等等.希望这可以帮助 !
| 归档时间: |
|
| 查看次数: |
21949 次 |
| 最近记录: |