TransactionScope с типизированным набором данных
Можно ли использовать TransactionScope с типизированным набором данных?
как в:
using (var transaction = new TransactionScope())
{
typedDataSet.DeleteStuff(id);
typedDataSet2.DeleteSomeOtherStuff(id2);
transaction.Complete();
}
Будут ли запросы sql, относящиеся к DeleteStuff(id) и DeleteSomeOtherStuff(id), фактически быть транзакционными, если выдается ошибка?
Я прочитал эту статью Богдана Чернячука об использовании транзакций со строго типизированными наборами данных, и я надеюсь, что мне не придется делать это таким образом.
1 ответ
Решение
Краткий ответ: да, это транзакционный.
Испытывать тоже было не сложно. Я выдал исключение перед самой транзакцией. Данные не были удалены из базы данных.
using (var transaction = new TransactionScope())
{
typedDataSet.DeleteStuff(id);
typedDataSet2.DeleteSomeOtherStuff(id2);
throw new NullReferenceException();
transaction.Complete();
}
Как ни странно, я рассказал о том, что происходило в БД, с помощью SQL SERVER Profiler, а хранимые процедуры, на которые ссылался набранный набор данных, были выполнены на сервере. Однако данные были как-то откатаны.