TransactionScope по сравнению с IDbTransaction

Каковы преимущества / недостатки использования TransactionScope по сравнению с IDbTransaction? Я предлагаю некоторые - исправьте / дополните список.

Преимущества TransactionScope:

  1. TransactionScope поддерживает распределенные транзакции - вы можете получить доступ к нескольким источникам данных или использовать несколько подключений к одному источнику данных внутри одной транзакции.
  2. TransactionScope более декларативен : мы можем вкладывать TransactionScopes, и нам приятнее использовать его сервисный уровень (нам не нужно самостоятельно обрабатывать IDbConnection и IDbTransaction).
  3. Я не уверен насчет третьего пункта, но вот он. IDbTransaction специфичен для соединения - вы должны держать соединение открытым в течение всей транзакции. Я не уверен, следует ли открывать соединение / соединения в течение всего TransactionScope (пожалуйста, поясните). Если не, возможен следующий рабочий процесс: запуск транзакции, открытое соединение - запрос - получение - закрытие соединения, выполнение ресурсоемких вычислений (сохранение соединений закрытыми), открытое соединение - запрос - получение - закрытие соединения, ..., фиксация транзакции. Но я полагаю, что TransactionScope невозможно поддерживать соединения открытыми до фиксации.

Недостатки TransactionScope:

  1. Он не поддерживает изменение IsolationLevel во время транзакции.
12
задан SiberianGuy 17 March 2011 в 09:28
поделиться