我们正在实现EnableRetryOnFailure
,但正如https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-resiliency所讨论的那样,对于用户定义的事务而言,这不是开箱即用的。
来自上述链接(选项3和4)的建议之一是使用ExecutionStrategy.ExecuteInTransaction
,并使用SaveChanges
调用acceptAllChangesOnSuccess: false
。
这是必需的,以便在SaveChanges成功但事务失败时可以重试事务。
[我们遇到的问题是,我们在事务中包含了UserManager
方法,这些方法将在上下文中内部调用SaveChanges
。
当我们无法将UserManager
更改为使用acceptAllChangesOnSuccess: false
时该如何做?
使用UserManager.CreateUser方法添加用户将在内部UserStore上调用SaveChanges方法。UserStore类具有一个公共属性AutoSaveChanges,该属性指示是否调用SaveChanges方法。通过将AutoSaveChanges属性设置为false,然后调用UserManager.CreateUser方法,将不会调用SaveChanges方法。