如何在OData查询中同时$expand和$select同表多个导航属性
OData多导航属性同时展开的单查询写法
直接用逗号分隔多个导航属性,在同一个$expand参数里定义各自的$select规则即可,正确的查询格式示例如下:
/if_sites?$select=你的主表字段1,你的主表字段2&$expand=if_if_locality_if_sites($select=导航表1字段1,导航表1字段2),if_if_site_if_schedule($select=if_name)
关键规则说明
- 多个需要展开的导航属性放在同一个
$expand参数里,用英文逗号分隔,不要重复写$expand参数 - 每个导航属性后通过
($select=...)指定该导航表要返回的字段,括号为英文括号,字段间同样用英文逗号分隔 - 所有字段、导航属性名称必须严格匹配OData服务定义的名称(注意大小写、下划线等细节,拼写错会报路径错误)
常见错误规避
- 不要写成
$expand=xxx&$expand=yyy这种重复参数的形式,OData服务不识别 - 确认两个导航属性都是
if_sites表的直接导航属性,而非嵌套在其他导航表中的属性(如果是嵌套的,路径需要调整为类似xxx($expand=yyy($select=...))的格式)
内容的提问来源于stack exchange,提问作者Lima
相关产品推荐
相关产品推荐

