В моем исследовании об откате транзакций в EF4 кажется, что все ссылаются на этот пост или предлагают аналогичное объяснение.В моем сценарии я хочу сделать это в сценарии модульного тестирования, где я хочу откатить практически все, что я делаю в контексте моего модульного тестирования, чтобы не обновлять данные в базе данных (да, мы будем увеличивать счетчики, но это нормально).Для этого лучше всего следовать следующему плану?Я упускаю какую-то концепцию или что-то еще с этим важным (кроме того, что мои SetupMyTest
и PerformMyTest
функции не будут существовать таким образом)?
[TestMethod]
public void Foo
{
using (var ts = new TransactionScope())
{
// Arrange
SetupMyTest(context);
// Act
PerformMyTest(context);
var numberOfChanges = context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
// if there's an issue, chances are that an exception has been thrown by now.
// Assert
Assert.IsTrue(numberOfChanges > 0, "Failed to _____");
// transaction will rollback because we do not ever call Complete on it
}
}