TransactionScope создает implicit transaction
, поэтому любое действие в области транзакции, поддерживающее обработку транзакций, будет обрабатываться соответствующим Менеджером транзакций.
В случае обработки базы данных будет использоваться SqlTransaction
. Так что да, ваш код будет делать то же самое, что и вручную, используя SqlTransaction.
Вы можете позвонить transaction.Current
, чтобы получить обработчик для текущего менеджера транзакций, чтобы убедиться в этом.
Обратите внимание, что один объект TransactionScope
может иметь один неявный тип транзакции, поэтому вам потребуется вложить объекты TransactionScope
, чтобы обеспечить обработку транзакций несколькими менеджерами. F.e.:
using(var ts = new TransactionScope)
{
using(var db = new TransactionScope)
{
//do db processing
}
using(var msmq = new TransactionScope)
{
//do msmq processing
}
ts.Complete();
}