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 操作来更新状态。
使用 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 操作来更新状态。