TransactionScope
TransactionScope é uma classe no System.Transactions, que é uma classe que vem com o framework .NET. Se o TransactionScope for liberado sem chamar o método Complete (o TransactionScope implementa a interface IDisposible, o uso de bloco é recomendado), ele considerará a operação como falha e reverterá a execução. O TransactionScope é uma API útil que gerencia transações ao redor ("ao redor" significa que bancos de dados que suportam TransactionScope podem gerenciar transações automaticamente), e a maioria dos bancos de dados tradicionais suporta essa API, incluindo o próprio MSSQL da Microsoft, é claro. Se você estiver usando um banco de dados ou algum sistema relacionado a transações que não suporta TransactionScope, ainda pode usar o interceptor, mas terá que modificar seu código para usar uma API adequada que suporte transações (por exemplo, usando a API BeginTransaction para obter a implementação IDbTransactions pelo provedor do banco de dados).
O acima é uma exceção personalizada que eu deliberadamente coloquei para ver se ela pode ser revertida normalmente, e a imagem abaixo mostra execução normal, sem exceções.
Chamar o método Complete do TransactionScope indica que a transação foi executada com sucesso. Claro, se a transação for sempre executada, então ela não é necessária. A razão pela qual existem transações é para resolver o problema da falha em múltiplas operações, e se houver uma falha, ela será revertida. Porque o . .NET no TransactionScope não há chamada de rollback explícita, e o equivalente mais próximo é usar o método Dispos. Se o TransactionScope for liberado antes que o método Complete seja chamado, então o TransactionScope realiza um rollback. Portanto, uma chamada Dispose precisa ser adicionada à face interceptor de transações para realizar o rollback.
Por fim, anexe o código!
Anexado está o código-fonte:Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta
|