TransactionScope
TransactionScope es una clase en System.Transactions, que viene con el framework .NET. Si el TransactionScope se libera sin llamar al método Complete (TransactionScope implementa la interfaz IDisposible, se recomienda usar bloque), entonces considerará que la operación falla y revertirá la ejecución. TransactionScope es una API útil que gestiona transacciones alrededor ("alrededor" significa que las bases de datos que soportan TransactionScope pueden gestionar transacciones automáticamente), y la mayoría de las bases de datos convencionales soportan esta API, incluyendo MSSQL de Microsoft, por supuesto. Si utilizas una base de datos o algún sistema relacionado con transacciones que no soporta TransactionScope, aún puedes usar el interceptor, pero tendrás que modificar tu código para usar una API adecuada que soporte transacciones (por ejemplo, usando la API BeginTransaction para obtener la implementación IDbTransactions del proveedor de base de datos).
Lo anterior es una excepción personalizada que lancé deliberadamente para ver si se puede revertir normalmente, y la imagen de abajo es la ejecución normal, sin excepciones.
Llamar al método Complete de TransactionScope indica que la transacción se ha ejecutado con éxito. Por supuesto, si la transacción siempre se ejecuta, entonces no es necesaria. La razón por la que hay transacciones es para resolver el problema del fallo en múltiples operaciones, y si hay un fallo, se revertirá. Porque el . .NET TransactionScope no tiene una llamada de rollback explícita, y el equivalente más cercano es usar el método Dispos. Si el TransactionScope se libera antes de que se llame al método Complete, entonces el TransactionScope realiza un rollback. Por lo tanto, es necesario añadir una llamada Dispose a la cara interceptor de transacciones para realizar el rollback.
¡Por último, adjunta el código!
Adjunto el código fuente:Turistas, si queréis ver el contenido oculto de esta publicación, por favor Respuesta
|