Я сомневаюсь, что это то, что происходит. TransactionScopes могут быть вложенными, если базовая технология поддерживает распределенные транзакции, если это необходимо. Например, если вы запускаете транзакцию и обновляете некоторые данные в базе данных A, а затем вызываете функцию, и внутри этой функции вы создаете новый TransactionScope и вставляете некоторые данные в базу данных B, тогда внутренняя транзакция использует «окружающий» транзакция, которая уже была открыта. Однако, чтобы это работало, вам нужен работающий координатор распределенных транзакций (для SQL-серверов). Кроме того, SQL Server 2005 и выше имеет возможность запускать транзакцию как обычную транзакцию и преобразовывать ее в распределенную транзакцию, если это необходимо, тогда как SQL 2000 запускает все из них как распределенные транзакции, поскольку не имеет возможности продвигать их.
Когда у вас есть вложенные транзакции, вся транзакция не фиксируется, пока не будет зафиксирована самая внешняя транзакция.
Вот дополнительная информация .
Посмотрите на TransactionScopeOption; это определяет, как вложенная транзакция взаимодействует с внешними транзакциями.