Webapi 更新多条记录

Webapi Update Multiple Records

使用 ASP.NET Web API 和 OData 针对 Entity Framework 数据库一次更新多条记录的最佳方法是什么?

假设我们的数据库中有一个 table,其中有一个 "State" 字段,我们想做类似于此 SQL 语句的事情:"UPDATE Table set State = 1"。我应该为每条记录使用 GET 和 PUT 循环吗?我一点也不喜欢它,我想这一定是一个更好的方法来完成这个。

谢谢

您似乎无法在 OData 中以本机方式执行此操作,但有一种方法肯定有效;只需使用本机 Web API 操作即可执行更新。

例如

[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,更清晰了一些。

OData 支持此类操作。您可以使用 OData 操作来更新状态。

博客:odata-actions-and-functions

样本:ODataActionSample