Webapi更新多个记录

时间:2015-02-10 22:46:29

标签: asp.net-web-api odata

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

假设我们的数据库中有一个表,其中包含" State"字段,我们想要做类似于这个SQL语句:" UPDATE表设置状态= 1"。我应该为每条记录做一个GET和PUT循环吗?我完全不喜欢它,我想这一定是更好的方法。

谢谢

2 个答案:

答案 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)

OData支持这种操作。您可以使用OData Action来更新状态。

博客:odata-actions-and-functions

示例:ODataActionSample