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端点函数(编辑多个实体)放在这个语句中似乎有点过分。
你需要确定应用Database.BeginTransaction()
方法的操作。
Database.BeginTransaction()
方法的功能是,
您可以在现有的DbContext
中使用start
和complete
事务本身。换句话说,它允许在同一事务中组合多个操作,因此all committed
或all rolled back
都可以作为一个。它还允许您为事务指定isolation level
。
因此,如果您不需要该功能,那么您可以轻松地只使用context.SaveChanges()
。正如我前面提到的,您必须清楚地确定需要应用Transactions
的操作。
注意:如果你需要处理事务,那么你必须使用Database.BeginTransaction()
方法。没有别的办法。
参考: 处理事务(EF6起)