我有以下代码:
Public Async Function Convert(schemaProgress As IProgress(Of ProgressReport), membersProgress As IProgress(Of Boolean), indexProgress As IProgress(Of Boolean)) As Task
Try
Using scope As New TransactionScope
Await ConvertRootAsync()
Dim schemaConversion = ConvertSchemaAsync(schemaProgress)
Await ConvertMembersAsync(membersProgress)
Await ConvertIndexAsync(indexProgress)
Await schemaConversion
scope.Complete()
End Using
Catch ex As Exception
Logger.ErrorException("", ex)
Throw New FatalConversionException
End Try
End Function
各种 'Convert' 方法使用DbContext
'SaveChanges
方法将数据添加到数据库。
为了测试这一点,我在 ConvertMembersAsync 方法中产生了一个故意的错误。块中的代码Catch
处理得很好。但是在 Exception 之前已经执行的 SaveChanges 操作不会回滚。
底层提供程序是 SQLExpress LocalDb 的提供程序。连接字符串:
“数据源=(LocalDb)\v11.0;初始目录=OurDb;MultipleActiveResultSets=True;集成安全=True;AttachDBFilename=|DataDirectory|MyDb.mdf”
我究竟做错了什么?