2017-02-14 43 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

很高興聽到這個消息。還有其他問題需要澄清嗎?否則,您可以將我的答案標記爲「已接受」的答案。 –