Estoy realizando cambios de datos en múltiples bases de datos, y quiero implementar una transacción que cubrirá todos los cambios.Implementación de transacciones en múltiples bases de datos
Esto es lo que tengo actualmente:
try
{
db[1].begintransaction();
db[1].ExecuteNonQuery();
db[2].begintransaction();
db[2].ExecuteNonQuery();
...
db[N].begintransaction();
db[N].ExecuteNonQuery();
// will execute only if no exception raised during the process
for (int a = 0; a < N; a++)
{
db[a].Commit();// what if there is an error/exception here
}
}
catch
{
for (int a = 0; a < N; a++)
{
db[a].RollBack();
}
}
El problema es que lo anterior podría fallar horriblemente si una excepción ocurre durante una Commit()
(ver el comentario). ¿Hay alguna forma mejor de lograr esto?
Nota: este no es el código real. He modificado significativamente para mayor claridad –
Oye, estoy teniendo el mismo problema ... Y mis bases de datos pueden ser Mysql y Servidor SQL ... ¿Funcionará con TransactionScope? –