Я за TransactionScope
.Согласно Марку, используйте фабричный метод на TransactionScope
, чтобы снизить уровень изоляции до READ COMMITTED
для наиболее распространенных случаев, которые я могу себе представить.
Обратите внимание, что вы можете использовать обе транзакции SQL И TransactionScope
-SQL BEGIN TRAN
/ COMMIT TRAN
будет мало влиять на TransactionScope
(кроме увеличения / уменьшения @@TRANCOUNT
) - таким образом, если вам нужно вызвать тот же SQL Sproc в другом месте, например, из запроса adhoc, который вы будете использоватьпо-прежнему получайте выгоду от транзакции.
Преимущество TransactionScope
IMO заключается в том, что он будет управлять DTC для вас, если вам действительно потребуется выполнить двухфазную фиксацию (например, несколько баз данных, очереди или другие транзакции XA).А с SQL 2005 и более поздними версиями он работает с Lightweight Transaction Manager , поэтому DTC не требуется, например, если все обращения к одной базе данных, одно соединение за раз.