私が次のことをした場合:
Using scope = New TransactionScope()
entries.Content.ReadAs(Of IList(Of WebMaint)).AsParallel.ForAll(Sub(entry)
_repos.Update(entry)
End Sub)
scope.Complete()
End Using
TransactionScope が機能しません。scope.complete にブレークポイントを設定すると、アクティブなトランザクションはなく、更新は既に完了しています。
私はそれを変更した場合:
Using scope = New TransactionScope()
entries.Content.ReadAs(Of IList(Of WebMaint)).ToList().ForEach(Sub(entry)
_repos.Update(entry)
End Sub)
scope.Complete()
End Using
すべてが期待どおりに機能します。並列バージョンが正しく動作しない理由を知っている人はいますか?