EntityFramework Core是否提供了一种以这种方式创建更新查询的方法,它将创建一个UPDATE,该UPDATE计算数字列而不是绝对值的变化?
有关问题的上下文
考虑以下DbContext:
public class MyValue {
public int Id {get;set;}
public int Value {get;set;}
}
public class MyContext : DbContext {
public DbSet<MyValue> Values {get;set;}
}
一个简单的命令可以执行以下操作:
var newValue = new MyValue { Value = 1 };
_dbContext.Add(newValue);
_dbContext.SaveChanges();
var value = _dbContext.Values.First();
value = value + 5;
_dbContext.SaveChanges();
在SaveChanges()
期间将结果语句发送到数据库
将是这样的:
更新设置[值] = 6 WHERE ID = 1
但是我希望它制定这样的更新语句:
更新设置[值] = [值] + 5 WHERE ID = 1
为什么?
如果要像第二次更新那样创建更新,则无需我采取有关并发的预防措施。该数据库应该能够为我处理。
我知道,我可以创建一个以这种方式处理更新的StoredProcedure,但是如果EFCore只是拆分Update命令,使(所有)数字列按差异进行更新,那似乎不是必需的。 那么-是否有集成的方法可以做到这一点,或者在SaveChanges()期间是否有可行的方法来实现它?