Пользовательский TransactionScope - PullRequest
2 голосов
/ 09 марта 2011

TransactionScope имеет несколько ограничений: 1. IsolationLevel не может измениться во время транзакции 2. Вложенные области транзакций не совсем то, что мы знаем как вложенные транзакции

Можно ли написать собственный TransactionScope для обхода этих ограничений или они интегрированы в ядро ​​System.Transactions и не могут быть изменены?

Upd. Если нет, то почему люди создают собственные TransactionScopes? Какие проблемы это позволяет решить?

1 Ответ

1 голос
/ 09 марта 2011

Re вашего 2-го пункта (и чтение комментария); действительно, «один сбой, все сразу откатывается» является неотъемлемой частью DTC; вся внешняя транзакция является атомной единицей. Вы можете иметь возможность использовать некоторые обычные транзакции SQL внутри транзакции DTC, но, честно говоря, это усложняет ситуацию ...

Мое предложение:

  • либо записать SQL в успешно (т.е. при откате, если что-то сильно заболело; не только для удобства экспериментальных запросов)
  • или: не используйте DTC

и я предпочитаю первое, так как откат дорог (коммит дешев).

(я не знаю точно, по какому первому вопросу, но я считаю довольно каменным)

...