Работает ли TransactionScope с уже существующими соединениями?

У меня есть такой код:

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 () в родительской функции никогда не запускается, по-прежнему ничего не откатывается.

В чем проблема?

6
задан Marc Gravell 13 February 2012 в 09:39
поделиться