使用ASP.NET Web API和OData针对Entity Framework数据库一次更新多条记录的最佳方法是什么?
假设我们的数据库中有一个表,其中包含" State"字段,我们想要做类似于这个SQL语句:" UPDATE表设置状态= 1"。我应该为每条记录做一个GET和PUT循环吗?我完全不喜欢它,我想这一定是更好的方法。
谢谢
答案 0 :(得分: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
,这更加清晰。
答案 1 :(得分:0)