對於使用ASP.NET Web API和OData針對實體框架數據庫,一次更新多個記錄的最佳方法是什麼?我們假設我們的數據庫中有一個帶有「State」字段的表,並且我們想要做一些類似於這條SQL語句的操作:「UPDATE Table set State = 1」。我應該使用GET和PUT爲每條記錄做一個循環嗎?我根本不喜歡它,我想這應該是一個更好的方法來實現這一點。Webapi更新多個記錄
謝謝
對於使用ASP.NET Web API和OData針對實體框架數據庫,一次更新多個記錄的最佳方法是什麼?我們假設我們的數據庫中有一個帶有「State」字段的表,並且我們想要做一些類似於這條SQL語句的操作:「UPDATE Table set State = 1」。我應該使用GET和PUT爲每條記錄做一個循環嗎?我根本不喜歡它,我想這應該是一個更好的方法來實現這一點。Webapi更新多個記錄
謝謝
它看起來就像你不能在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
這是一個更清晰一點。
這是我正在尋找的操作系統,這是一個很好的方法。謝謝你,很好的回答 – 2015-02-12 13:41:22
好像少一個ASP.NET的WebAPI的問題,更多的東西與您的數據提供者。你在使用什麼數據提供者?實體框架? – 2015-02-10 23:01:04
是的,實體框架。但我並不是指更新的內部開發,但是如果有一種方法可以避免GET和PUT的循環。謝謝 – 2015-02-10 23:09:57
也許我沒有解釋清楚,對不起。我的意思是,因爲我們有一個GetAll方法,我們可以過濾它(使用OData)來指定我們想要的記錄,如果有方法來過濾我們想要更新的記錄。 – 2015-02-10 23:14:16