实体框架-更新/增加现有价值

本文关键字:增加 有价值 更新 框架 实体 | 更新日期: 2023-09-27 18:26:08

在实体框架中,是否可以向数据库中的现有值添加值?目前我有这个:

var ent = this.repository.GetSingle(id);
var moreQuantity = 5; // This is calculated in application logic
ent.quantity = ent.quantity + moreQuantity;
this.repository.SaveChanges();

是否可以在单个数据库交互中执行同样的操作?我在SQL中的意思是这样的:

UPDATE table SET quantity = quantity + {moreQuantity} WHERE id = {id}

不使用ExecuteSqlCommand或ExecuteStoreQuery。

我之所以这么问,是因为我的应用程序中的GetSingle和SaveChanges之间有相当长的时间,所以我在运行时遇到了一些并发问题。我设法用RowVersion和ConcurrencyCheck解决了这个问题,但我一直在寻找更好的实现。

提前谢谢。

实体框架-更新/增加现有价值

有一个不错的库EntityFramework。扩展

安装并写入:

context.repository.Update(e => e.id == id, e2 => new entity { quantity = e2.quantity + moreQuantity });

EntityFramework Extended(6.1)的当前版本已弃用接受答案中指示的重载。过滤和实际更新现在应该分开。这是一件好事,因为过滤可以很容易地动态构建。

对于实际问题,查询应该如下所示:

context.repository
    .Where(e => e.id == id)
    .Update(e2 => new entity { quantity = e2.quantity + moreQuantity });