使用OData标准是否可以通过发送新集合来替换集合? 场景: person对象包含一个列表Address对象。我想用新的集合替换Address集合。 PUT人员(1)/地址 [{" city":" X"," country":" US"},{" city":& #34; Y"," country":" US"}]
答案 0 :(得分:0)
开箱即用(至少对于ODATAv3)是不可能的,因为默认路由模板不会期望关键部分之后的段。
但是你应该能够添加一个可以实现你想要的ODATA Action。您的操作定义可能与此类似:
var action = builder.Entity<Person>()
.Action("Addresses")
.Returns<bool>();
action.Parameter<Collection<CityCountryPair>>("data");
类型CityCountryPair
将是包含您要更改的属性的常规DTO。确保此类型也在Odata中注册为EntitySet,或者使用仅包含基本类型的普通地图/字典。
对ODATA操作的实际调用将类似于:
POST http://www.example.com/api/YourEndpoint/Persons(42)/Addresses
Content-Type: application/json
{
"data" :
[
{ "city" : "Berne" , "country": "CH" },
{ "city" : "Y" , "country": "CH" }
]
}
如果您想发送更复杂的数据类型,您仍然可以求助于客户JSON Deserialiser并覆盖默认数据类型,或者毕竟使用自定义模型绑定器。