如何使用EF执行更新,其中我想要更改的值是相对值。
目前我这样做
public Result UpdateResult(long resultID, int count)
{
var result = this.UOW.GetRepository<Result>().GetAll().FirstOrDefault(sr => sr.ResultID == resultID);
scheduleResult.count += count;
return result;
}
但问题是,在分布式环境中,这可能会发生两次,并且可能会错过值,因为我们基本上执行GET然后更新。如何将UPDATE作为单个操作执行,将+=
发送到SQL服务器以确保SQL负责锁定行?
答案 0 :(得分:0)
您可以创建存储过程并运行它。或者直接在服务器上调用SQL查询。
DbContext.Database公开了此功能。
您还可以使用TransactionScope(MSDN docs)将两项操作保留在交易中,但这样做会更贵。