如何使用OData指定仅返回扩展子记录集的第一条或最后一条记录
OData 扩展子记录取首尾单条的正确实现方案
错误原因排查
当前请求触发 URI 无效报错主要有两个核心问题:
- $expand 内部多查询参数分隔符不符合规范:OData v4 标准要求 $expand 嵌套查询的多个选项之间用逗号分隔,你使用的分号是错误语法
- 实体名拼写疑似有误:请求路径中的
ParenTable缺失字母 t,正确实体名应为ParentTable
正确查询示例
取子表最后一条(最新添加的记录)
http://myurl/odata/ParentTable?$count=true&$filter=Id eq 123456&$expand=ChildTable($orderby=AddedTimeStamp desc,$top=1)
取子表第一条(最早添加的记录)
仅需调整 $orderby 的排序方向即可:
http://myurl/odata/ParentTable?$count=true&$filter=Id eq 123456&$expand=ChildTable($orderby=AddedTimeStamp asc,$top=1)
兼容说明
如果修改分隔符后仍然报错,需确认服务端 OData 版本:
- OData v3 原生不支持 $expand 内嵌套 $top/$orderby 参数,需要服务端单独开启扩展支持,或单独调用子表接口做关联查询
- 少数自研 OData 框架可能要求嵌套参数用 & 分隔,优先按标准逗号分隔调试即可
内容的提问来源于stack exchange,提问作者John S
相关产品推荐
相关产品推荐

