c# . net API多个save.changes()事务

本文关键字:事务 changes save net API 多个 | 更新日期: 2023-09-27 18:07:39

我想确认这是否是在。net API中处理EF6事务的最佳方式。因此,如果API只更改了一个实体,例如更新用户拥有的土豆中的土豆数。我不需要用

把它括起来
using (var dbContextTransaction = context.Database.BeginTransaction()) {}

,因为如果EF不能提交更改,它将不会提交。但是,如果单个API端点为expl更新多个实体。API端点createSoup(),它从用户中删除多个蔬菜并为用户创建一个新的实体汤。然后,我确实需要用上述语句将其括起来,以防它删除了蔬菜,但无法创建汤实体,反之亦然。没有别的办法了吗?因为把所有API端点函数(编辑多个实体)放在这个语句中似乎有点过分。

c# . net API多个save.changes()事务

你需要确定应用Database.BeginTransaction()方法的操作。

Database.BeginTransaction()方法的功能是,
您可以在现有的DbContext中使用startcomplete事务本身。换句话说,它允许在同一事务中组合多个操作,因此all committedall rolled back都可以作为一个。它还允许您为事务指定isolation level

因此,如果您不需要该功能,那么您可以轻松地只使用context.SaveChanges()。正如我前面提到的,您必须清楚地确定需要应用Transactions的操作。

注意:如果你需要处理事务,那么你必须使用Database.BeginTransaction()方法。没有别的办法。

参考: 处理事务(EF6起)