技术问询:OData v2是否支持通过POST创建包含实体?
OData v2对包含实体创建机制的支持情况
直接给结论:OData v2 并不支持包含实体(Contained Entity)的概念,也不支持你提到的这种通过父实体导航属性直接创建子实体的机制。
具体细节说明如下:
- 从规范层面来看,OData v2的核心文档里完全没有“包含实体”这个术语,也没有设计这种“依附父实体、无独立资源路径”的实体类型。在v2的体系中,所有关联的实体都是独立资源,拥有自己的唯一标识符和独立的访问端点。
- 对比你给出的v4示例请求:
POST serviceRoot/People('russellwhyte')/Trips(通过Person的包含导航属性Trips直接创建Trip),这种模式在v2里是不被认可的。如果要在v2里实现类似的关联效果,一般需要分两步操作:- 先单独创建Trip实体,发送请求到
POST serviceRoot/Trips - 再通过引用绑定请求把Trip关联到目标Person,比如发送
POST serviceRoot/People('russellwhyte')/Trips/$ref,在请求体中指定Trip的资源引用
- 先单独创建Trip实体,发送请求到
- 你提到v4新特性文档没把包含实体列为新增内容,这可能是因为包含实体在v4的早期规范草案中就已经被纳入,但它确实是v4才新增的核心特性,v2没有对应的实现支持。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

