在我關於EF4回滾交易的研究中,似乎每個人都提到this blog post或提供了類似的解釋。在我的場景中,我想在單元測試場景中執行此操作,我想在單元測試環境中回滾幾乎所有事情,以防止更新數據庫中的數據(是的,我們將增加計數器,但那沒關係)。爲了做到這一點,最好遵循以下計劃嗎?我是否錯過了一些概念或其他重要的東西(除了我的SetupMyTest
和PerformMyTest
函數不會真的以這種方式存在)?如何在EF4中回滾單元測試TearDown?
[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
}
}
嗯,在EF4中,顯然SaveChanges(false)過載已被棄用。它看起來像SaveChanges(SaveOptions.AcceptAllChangesAfterSave)是它的替代品,所以我在我原來的問題進行更新。 – Jaxidian 2010-04-21 21:01:55