2015-02-10 194 views
1

對於使用ASP.NET Web API和OData針對實體框架數據庫,一次更新多個記錄的最佳方法是什麼?我們假設我們的數據庫中有一個帶有「State」字段的表,並且我們想要做一些類似於這條SQL語句的操作:「UPDATE Table set State = 1」。我應該使用GET和PUT爲每條記錄做一個循環嗎?我根本不喜歡它,我想這應該是一個更好的方法來實現這一點。Webapi更新多個記錄

謝謝

+0

好像少一個ASP.NET的WebAPI的問題,更多的東西與您的數據提供者。你在使用什麼數據提供者?實體框架? – 2015-02-10 23:01:04

+0

是的,實體框架。但我並不是指更新的內部開發,但是如果有一種方法可以避免GET和PUT的循環。謝謝 – 2015-02-10 23:09:57

+0

也許我沒有解釋清楚,對不起。我的意思是,因爲我們有一個GetAll方法,我們可以過濾它(使用OData)來指定我們想要的記錄,如果有方法來過濾我們想要更新的記錄。 – 2015-02-10 23:14:16

回答

1

它看起來就像你不能在OData的做到這一點本身,但有一個辦法,肯定會工作;只需使用本機Web API操作即可執行更新。

E.g.

[HttpPut] 
[Route("resources/state")] 
public IHttpActionResult UpdateState(int newState) 
{ 
    db.Database.SqlCommand("UPDATE Table SET State = @p0", newState); 
} 

你會從客戶端使用PUT /resources/state?newState=1來調用它。

這可能是更清晰,使newState枚舉:

public enum State 
{ 
    New = 0, 
    Processed = 1, 
    Error = 2, 
    etc. 
} 

[HttpPut] 
[Route("resources/state")] 
public IHttpActionResult UpdateState(State newState) 
{ 
    db.Database.SqlCommand("UPDATE Table SET State = @p0", (int)newState); 
} 

然後您的通話變得PUT /resources/state?newState=Processed這是一個更清晰一點。

+0

這是我正在尋找的操作系統,這是一個很好的方法。謝謝你,很好的回答 – 2015-02-12 13:41:22