Когда речь идет о транзакциях на основе соединений (IDbTransaction
), общая производительность должна быть примерно одинаковой, но, обрабатывая ее в коде .NET, вы позволяете удобно распределять несколько операций базы данных по одному и тому же соединению. Если вы управляете транзакциями внутри TSQL, вам действительно следует ограничить его одним запросом TSQL. Вполне возможно, что для начала / конца возможны дополнительные поездки туда и обратно, но это вряд ли повредит вам.
Довольно редко (в наши дни) я пишу транзакции на основе TSQL вручную - возможно, если бы я писал что-то, вызываемое непосредственно сервером через агента (а не из моего собственного кода приложения).
Большая разница между IDbTransaction
и TransactionScope
. Подробнее см. Транзакции в .net , но короткая версия заключается в том, что TransactionScope
немного медленнее (в зависимости от сценария), но может охватывают несколько соединений / баз данных (или других ресурсов).