对于使用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