简单的问题,当更新一个实体时,使用Entity Framework是否有可能实现这个查询?
update test set value = value + 1 where id = 10
简单的问题,当更新一个实体时,使用Entity Framework是否有可能实现这个查询?
update test set value = value + 1 where id = 10
dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });
这种形式不行。
您需要选择所有符合条件的实体,对它们进行循环并更新它们。
如果您想要在数据库中正确地执行此操作,因为您的数据集可能非常大,您将需要直接使用SQL。(我不记得EF是否有像Linq To SQL那样直接执行UPDATE查询的方法)。
var myEntity = context.First(item => item.id == 10);
myEntity.value += 1;
context.SaveChanges();
应该会生成类似的SQL语句,您可以观察分析器以查看实际生成的SQL语句,但它应该非常类似于您的语句。
await context.Tests.Where(c => c.Id == 10).ExecuteUpdateAsync(
s => s.SetProperty(b => b.Value, b => b.Value + 1));