Esto está relacionado con Nested Database transactions in C#.¿Puedo mezclar SqlConnection.BeginTransaction y TransactionScope?
Los objetos en la colección que quiero tomar en transacción implementan sus propias transacciones utilizando el método SqlConnection.BeginTransaction.
Después de leer esto post no estoy seguro de si puedo mezclar esos también o no. Estoy usando SQL Server 2005 y cada objeto usa detalles de conexión de la clase de configuración estática.
¿Alguien tiene experiencia con esto?
Aquí es el código de ejemplo:
using(TransactionScope scope = new TransactionScope())
{
for (int i=0; i<=1000....)
{
SqlConnection con = new SqlConnection()
SqlCommand cmd = new SqlCommand("delete from ...", con);
try {
con.Open();
DbTransaction t = con.BeginTransaction();
cmd.ExecuteNonQuery();
...
cmd.CommandText = .... ;
cmd.ExecuteNonQuery();
t.Commit ...
}
catch {
t.Rollback ...
}
con.Close()
}
}
Thx
Debe marcar su respuesta como la respuesta a esta pregunta - ¡está permitido! – Fenton
En mi caso, tenemos pruebas de "unidad" envueltas en TransactionScope para que en nuestras máquinas de desarrollo podamos lograr complejas manipulaciones de bases de datos sin pensarlo para cada prueba y clase de prueba y tener todo [teóricamente] revertido. Al mismo tiempo, no queremos necesariamente el uso de MS DTC en los servidores de producción, y quería envolver algunas manipulaciones de entidades de Entity Framework compuestas en una transacción regular para que toda la operación pueda deshacerse si alguna de ellas falla ... Lo ideal sería que TransactionScope continúe funcionando, y la transacción interna también debería ... – bambams