在我对 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
}
}