Цель проста - данные отката, вставленные в модульном тесте. Вот как это происходит. В модульном тесте вызывается метод, который создает новое соединение и вставляет некоторые данные. После этого модульный тест создает новое соединение и пытается найти то, что было вставлено, и подтвердить это. Я надеялся обернуть эти две вещи с помощью TransactionScope
, а не вызвать Complete
и увидеть, что вставленные данные откатились. Этого не происходит Я что-то не так делаю, или я просто упускаю суть?
using (new TransactionScope())
{
// call a method that inserts data
var target = new ....
target.DoStuffAndEndupWithDataInDb();
// Now assert what has been added.
using (var conn = new SqlConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
// Just read the data from DB
cmd.CommandText = "SELECT...";
conn.Open();
int count = 0;
using (var rdr = cmd.ExecuteReader())
{
// Read records here
...
count++;
}
// Expecting, say, 3 records here
Assert.AreEqual(3, count);
}
}
РЕДАКТИРОВАТЬ: Я не думаю, что на моей машине был запущен и настроен DTC. Поэтому я запустил службу и попытался настроить DTC, но я получаю эту ошибку.
![enter image description here](https://i.stack.imgur.com/yMFti.jpg)