Я проснулся сегодня утром, пытаясь преодолеть 4 года плохой практики программирования из-за компании, над которой я работал. Одна из вещей, которые я недавно наткнулся на System.Transactions. Прочитав о них последние несколько часов, я думаю, что у меня есть адекватное понимание того, как они работают, и почему вы хотели бы их использовать. Тем не менее, все примеры, на которые я смотрел, показывают, что внутри транзакции вызывается встроенный T-SQL.Mixing System.Transactions with SqlTransactions
Я в значительной степени использую хранимые процедуры исключительно при доступе к базе данных, а существующие хранимые процедуры завернуты в их собственные SqlTransactions. Вы знаете, используя «Begin Tran», а затем откатываетесь или совершаете. Если Stored Proc вызывает другой сохраненный proc, он также создает транзакцию, а Commits пузырится, пока внешний не совершит или не откатится. Прекрасно работает.
Итак, теперь мой вопрос: если я хочу начать использовать System.Transactions в своем коде - для простых целей мониторинга последовательных задач базы данных, которые не могут быть вложены внутри одной хранимой процедуры - как это работает с существующие SqlTransactions у меня уже есть в моих хранимых процедурах?
Будет использовать System.Transactions в моем коде, просто добавьте еще один уровень защиты до того, как он будет выполнен, или потому, что я явно совершаю в своем SqlTransaction - будут ли данные сохраняться независимо от того, сделка?
Принятый ответ на этот вопрос неверен. Использование транзакции Sql в System.Transaction вызывает непреднамеренное поведение (а именно, транзакция Sql НЕ участвует во внешнем System.Transaction!). Это эффективно нейтрализует вашу транзакцию. –
Спасибо, что воспользовались этими исправлениями, Билл. 7 лет спустя, и я даже не могу вспомнить, выполнил ли я все, что в этом нуждалось, но хорошо иметь правильный ответ. :) – WesleyJohnson