Разница между транзакцией и TransactionScope - PullRequest
12 голосов
/ 27 июня 2011

Я разрабатываю приложение, которое связывается с базой данных SQL Server 2005 для выполнения некоторых хранимых процедур. Мой клиент требует, чтобы все транзакции управлялись на стороне C #, а не SQL Server, и поэтому я использую System.Transactions.TransactionScope при доступе к базе данных. Тем не менее, я только что видел тип данных System.Transactions.Transaction, и я в замешательстве ... Каковы основные плюсы / минусы каждого типа? Какой из них я должен использовать?

Обратите внимание, что я также должен использовать блок приложения доступа к данным Enterprise Library.

1 Ответ

12 голосов
/ 27 июня 2011

Из msdn:

Класс TransactionScope предоставляет простой способ пометить блок кода как участвующий в транзакции, , не требуя взаимодействия с самой транзакцией .Объем транзакции может выбирать и управлять внешней транзакцией автоматически.Из-за простоты использования и эффективности рекомендуется использовать класс TransactionScope при разработке приложения для транзакций. Когда вы создаете экземпляр TransactionScope, менеджер транзакций определяет, в какой транзакции участвовать .После определения область действия всегда участвует в этой транзакции.Решение основывается на двух факторах: присутствует ли окружающая транзакция и значение параметра TransactionScopeOption в конструкторе.Окружающая транзакция - это транзакция, в которой выполняется ваш код.Вы можете получить ссылку на внешнюю транзакцию, вызвав статическое свойство Current класса Transaction.

Подробнее об этом можно прочитать здесь:

http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx

http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope(v=vs.90).aspx

Отличная (немного устаревшая) статья о транзакции в .NET 2.0

http://msdn.microsoft.com/en-us/library/ms973865.aspx

...