我有一个与 EF Core 并发处理相关的问题。
假设我们有一个具有
Person
实体的应用程序,并且它具有 balance
属性。我们有一个 add-balance
控制器端点,它获取 personId
和 amount
的输入来添加余额。
如果我们使用传统方式从数据库中跟踪人的实体,请设置
person.Balance = person.Balance + amount
然后用新的人员实体更新数据库,这会导致并发冲突,因为可能有其他请求同时到来。
我的问题是,如果我生成一个 SQL 原始查询来直接使用
RawSQLQuery
执行此操作
UPDATE Person SET Balance = Balance + {1} WHERE id = {2}
这会帮助我避免应用程序级别的并发问题吗?现在数据库事务处理所有值?
如果不是,确保正确更新人员余额的最佳方法是什么。
处理应用程序中的并发对于确保数据一致性至关重要,特别是当多个用户或进程可以同时修改相同的数据时。在 Entity Framework (EF) Core 中,乐观并发是首选方法。让我们探讨一下如何有效地处理并发冲突: