2017-02-14 65 views
0

使用OData标准可以通过发送新集合来替换集合吗? 场景: person对象包含一个列表Address对象。我想用新的集合替换Address集合。 PUT人(1)/地址 [{“city”:“X”,“country”:“US”},{“city”:“Y”,“country”:“US”}]OData PUT替换集合属性

回答

0

这是不可能的(至少对于ODATAv3来说),因为默认路由模板不期望在关键部分之后的段。

但是你应该可以添加一个ODATA动作来完成你想要达到的目标。然后,您的操作定义可能与此类似:

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解串器和覆盖默认一个或使用毕竟是一个自定义模型绑定器。

+0

谢谢。 ODATA行动帮助获得我想要的东西。 –

+0

很高兴听到这个消息。还有其他问题需要澄清吗?否则,您可以将我的答案标记为“已接受”的答案。 –