从阅读Open Types in OData v4 with ASP.NET Web API开始,我的理解是$元数据调用不会将动态属性作为实体架构的一部分返回。
由于$ select不允许指定属性的类型,这是否意味着开放实体的模式应该以某种方式存储在服务中?为什么不应该在$ metadata中包含动态属性呢?
答案 0 :(得分:0)
你是对的,动态属性没有被添加到元数据中,因为它们通常用于覆盖添加属性的情况,这些属性不是针对所有对象的,也不是添加不属性的属性。在构建元数据时已知(否则,您可以使用普通属性)
您可以使用此标头获取有关实际调用中属性类型的更多信息,但是,它不提供简单类型(如字符串,整数等)的信息,我发现这些信息非常困难使用(但它总比没有好!)
Accept: application/json;odata.metadata=full
例如,使用OData TripPin示例服务,使用该标头调用此url:http://services.odata.org/V4/TripPinServiceRW/People将在有效负载"AddressInfo@odata.type": "#Collection(Microsoft.OData.SampleService.Models.TripPin.Location)"
中为您提供一个新属性,然后您可以使用该属性来理解{{ 1}}属性