Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 25346|Respuesta: 2

[Fuente] Uso de TransactionScope en C#

[Copiar enlace]
Publicado en 10/4/2017 10:16:25 | | | |
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 favorRespuesta






Anterior:La instrucción CREATE DATABASE no está permitida dentro de una transacción de varias instrucciones
Próximo:Haz que OrderBy de Linq soporte campos dinámicos
 Propietario| Publicado en 10/4/2017 10:20:30 |
La clase TransactionScope puede usarse anidada, y si quieres usarla anidada, necesitas especificar el parámetro TransactionScopeOption en el bloque de transacciones anidadas. El parámetro por defecto es Required.

Cuando se requiere la opción TransactionScope de la clase anidada TransactionScope, puedes ver el siguiente resultado: sus transacciones tienen el mismo ID. Además, solo es un éxito real cuando ambos TransactionScopes están completos.

Si configuras TransactionScopeOption en RequiresNew, los bloques de transacción anidados y los bloques externos son independientes y no se afectan entre sí.

TransactionScopeOption está configurado en Suprimir para cancelar la transacción del bloque actual, lo cual generalmente se usa raramente.
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com