Все, что вы, ребята, разместили здесь, звучит хорошо для меня, но мы не должны забывать, что против решения всегда есть преимущества и недостатки
Например, управляя транзакцией на стороне приложения (неважно, как), вы собираетесь увеличить сетевой трафик, потому что .net должен отправить всю команду на SQL Server:
с использованием (var tran = new TransactionScope ()) {
// do work A
// do work B
// do work C
tran.Complete();
}
В этом случае он должен отправить «начать транзакцию» и «зафиксировать».
Худшее, что может случиться, - это что произойдет, если после «// выполнить работу b» соединение разорвано? Это означает, что .Net не сможет отправить ни «откат», ни «фиксация», так что у нас будет открытая транзакция на стороне SQL Server, которая может вызвать тупиковую блокировку.