IIRC, автоматическое зачисление в окружающие транзакции происходит при создании / открытии соединения;если вы создаете соединение в рамках транзакции, все должно быть хорошо.Однако:
все они используют одно и то же соединение, объявленное ранее
, если соединение существует вне транзакции, оно не будет подключено.
Лучше всего создавать / открывать соединение только вокруг единицы работы, а не навсегда (и: пусть пул соединений выполняет свою работу).Если вы следуете этой практике, она должна работать нормально.Итак:
Это не будет работать:
using(var conn = CreateAndOpenConnection()) {
// ...
using(var tran = new TransactionScope()) {
SomeOperations(conn);
tran.Complete();
}
// ...
}
где-как это должно работать:
using(var tran = new TransactionScope()) {
// ...
using(var conn = CreateAndOpenConnection()) {
SomeOperations(conn);
}
tran.Complete();
// ...
}