Esta noche he estado repasando mis conocimientos, tratando de superar 4 años de malas prácticas de programación debido a la compañía para la que estaba trabajando. Una de las cosas con las que me topé recientemente fue System.Transactions. Después de leer sobre ellos durante las últimas horas, creo que tengo una comprensión adecuada de cómo funcionan y por qué querrías usarlos. Sin embargo, todos los ejemplos que he visto muestran T-SQL en línea que se llama desde dentro de la transacción.Sistema de mezcla.Transacciones con SqlTransactions
Casi uso procedimientos almacenados exclusivamente al hacer acceso a la base de datos y los procedimientos almacenados existentes están todos envueltos en sus propias SqlTransacciones. Ya sabes, usar 'Begin Tran' y luego retroceder o comprometerse. Si un Stored Proc llama a otro proceso almacenado, también crea una transacción y los Compromisos aumentan hasta que el externo se compromete o retrocede. Funciona genial.
Así que ahora mi pregunta es, si quería comenzar a usar System.Transactions en mi código, con el simple propósito de monitorear tareas sucesivas de la base de datos que no pueden anidarse en un solo procedimiento almacenado, ¿cómo funciona eso con el ¿SqlTransactions existentes que ya tengo en mis procesos almacenados?
¿Usaré System.Transactions en mi código solo agregaré una capa más de protección antes de que esté realmente comprometido, o porque estoy cometiendo explícitamente en mi SqlTransaction - los datos se conservarán independientemente de la confirmación o el retroceso en el código basado ¿transacción?
La respuesta aceptada sobre esta pregunta es incorrecta. Usar una transacción Sql dentro de un System.Transaction causa un comportamiento involuntario (concretamente, una transacción Sql NO participa en el System.Transaction externo). Hacer esto neutraliza eficazmente su transacción. –
Gracias por hacer estas correcciones, Bill. 7 años después y ni siquiera recuerdo si terminé implementando algo que lo necesitaba, pero es bueno tener la respuesta correcta marcada. :) – WesleyJohnson