使用EF

时间:2015-12-16 12:14:50

标签: sql-server entity-framework

如何使用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负责锁定行?

1 个答案:

答案 0 :(得分:0)

您可以创建存储过程并运行它。或者直接在服务器上调用SQL查询。

DbContext.Database公开了此功能。

您还可以使用TransactionScopeMSDN docs)将两项操作保留在交易中,但这样做会更贵。