Транзакции .NET - PullRequest
       8

Транзакции .NET

0 голосов
/ 02 июня 2009

Я только что начал использовать транзакции в .NET, и у меня возникла проблема. В функции (в моем DAL) я использую область транзакции. В конце функции я запускаю функцию Complete ().

Теперь у меня есть тест для этой функции, который также использует область транзакции. В конце этой тестовой функции я не запускаю функцию complete (), чтобы мой тест не заполнял базу данных тестовыми данными. Кажется, это работает нормально.

Моя проблема сейчас заключается в том, что если я выполню триггер complete () в своей тестовой функции, транзакция будет завершена дважды. Это кажется логичным, так как я дважды запускаю Complete () ... но есть ли способ избежать этого? Есть ли способ дважды вызвать функцию Complete (), не выполняя дважды область действия ... Конечно, должен быть способ вложения транзакций ...?

Ответы [ 3 ]

1 голос
/ 02 июня 2009
0 голосов
/ 02 июня 2009

Попробуйте создать свой внутренний TransactionScope с параметром Требуется новый:

new TransactionScope(TransactionScopeOption.RequiresNew)
0 голосов
/ 02 июня 2009

Насколько я понимаю, если вы удаляете без вызова Complete, транзакция будет отменена, а TransactionScope поддерживает вложенные транзакции . Смешивайте и сопоставляйте, и вы сможете откатить всю работу, которую выполняют ваши тесты.

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