http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.complete.aspx состояния:
TransactionScope.Complete () Указывает, что все операции в области успешно завершены.
Таким образом, если ваш «Код для вставки» не генерирует исключение, которое завершает блок «Использование», ваш код всегда вызывает scope.Complete () и фиксирует изменения вашей базы данных.
Если ваши «Код для удаления» и «Код для вставки» обрабатывают исключения внутренне, то они должны возвращать информацию в блок «Использование», чтобы указать, сработало ли что-либо. Например, предполагая, что ваши блоки «кода» являются вызовами методов, которые возвращают true, если все хорошо, или false, если не удалось, вы можете написать:
bool allGood;
allGood = CodeToDelete();
if(allGood)
{
allGood = CodeToInsert();
}
if(allGood)
{
scope.Complete();
}