Редактировать: Сначала я не был уверен, что вы понимаете транзакции с БД, поэтому вот очень краткое описание:
TransactionScope
предназначено для переноса транзакция базы данных с механизмом, безопасным для исключительных ситуаций .
. Вы используете его для переноса набора операций, которые должны быть атомарными , странзакции, поэтому, если вы потерпите неудачу в одном обновлении, все действия БД в этой транзакции будут отменены.
Вы используете его в блоке using
, так что если ваш код выдает исключение, транзакция будет свернута.назад, вместо фиксации в базе данных.
Я хотел выполнить обновление и завершить работу базы данных перед вставкой вторым методом, а затем проверить, не откатилось ли обновление ... AmЯ на правильном пути?
Да.Ваш код уже должен обрабатывать его:
- Если база данных отключена до того, как
addCheck
выполнит вставку, то вставка должна вызвать исключение - Поскольку генерируется исключение,
Complete
никогда не должен вызываться - Блок finally должен автоматически откатывать транзакцию при достижении (скрытого) блока
finally
, а Complete
не вызывается
Я не мог понять, как это проверить
Если вы хотите написать модульный тест для своего кода, то я бы не предложил "«переводить БД в автономный режим в середине выполнения».
Вместо этого я бы предложил сделать вашу логику БД достаточно гибкой, чтобы указывать на разные БД.Затем удалите таблицу или некоторые столбцы, в которые вставляется addCheck
.Попробуйте настроить вашу БД так, чтобы setID
был успешным, а addCheck
- неудачным.