У меня есть такой код:
try
{
using (TransactionScope scope = new TransactionScope())
{
some_db_function();
for (i = 0; i < 10; i++)
{
some_other_db_function();
}
scope.Complete();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + " all done transactions will rollback");
}
и внутри функций db происходит что-то вроде этого:
private void some_db_functions()
{
using (TransactionScope scope = new TransactionScope())
{
//some processing on db
scope.Complete();
}
}
Предполагается, что если есть была какая-либо проблема в транзакциях базы данных, например, ошибка при вставке или обновлении функций; все транзакции, которые были выполнены до сих пор, откатываются. Но так не работает; и хотя он генерирует исключение и scope.Complete ()
в родительской функции никогда не запускается, по-прежнему ничего не откатывается.
В чем проблема?