.Net TransactionScope обрабатывает очень сложные вещи базы данных? - PullRequest
3 голосов
/ 16 июля 2010

Мне поручено доказать или опровергнуть поддержку транзакций в .net.Мы все знаем, что TransactionScope может справиться с фиксацией / откатом простых вещей, таких как вставка 3 записей в 3 разные таблицы и затем удаление 5 записей в 5 других таблицах.

Моя команда не так уверена, что TransactionScopeможет правильно обработать транзакцию, если эти вставки / удаления имеют триггеры.Или если мы выполним SP, который имеет свои собственные вложенные транзакции.

Поддерживает ли поддержка транзакций .net эти более сложные ситуации?Нужно ли указывать какие-то неочевидные варианты, чтобы все это работало?

Я слышал, что некоторые из наших SP могут вызвать у нас проблемы, так как некоторые совершают суб-транзакции самостоятельно.Кто-нибудь знает, обрабатывается ли данный конкретный сценарий TransactionScope?

1 Ответ

2 голосов
/ 16 июля 2010

Мы используем TransactionScope для некоторых очень сложных и длительных операций с базой данных, включающих тысячи строк в дюжине или более таблиц.Он справляется с этим просто отлично.Однако, IMO, вы НЕ хотите запускать и совершать транзакции в хранимых процедурах и / или триггерах. Вы должны позволить своему вызывающему (C #) коду обработать это.Вы теряете большую гибкость, обрабатывая транзакции на более низком уровне сохраненных процедур.

Кроме того, при использовании TransactionScope будьте осторожны, чтобы ограничить себя одним объектом подключения.Если вы этого не сделаете, транзакция перерастет в транзакцию MTC, для которой на клиенте и сервере должна быть запущена служба MTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...