2016-02-24 23 views
0

我正在使用TransactionScope執行測試方法。 我希望在執行測試方法期間對數據庫所做的所有更改最終回滾到之前的狀態。有關.NET中TransactionScope for Database的行爲問題

爲了實現這一點,我沒有在scope的末尾寫scope.Complete()。

我的問題:

別當我不寫到底transaction.Complete();通過dbContext.Savechanges()做數據庫的變化被還原?

+1

你可以試試。它的確如此。 –

回答

1

該方法是否正確?

使用EF你可以不使用Tx範圍,只是不保存更改。取決於您正在測試的內容 - 如果不編寫數據庫,您可能無法找到模型錯誤。

我需要添加dbContext.SaveChanges();

取決於您是否希望發生這種情況。

是否有必要將更改寫入數據庫,以便數據可以被其他 例程使用?

所有的尊重,你在問什麼?你應該知道你想要什麼。對於單元測試通常情況並非如此 - 但對於集成測試來說很可能。你必須知道。當這裏的人們出現並徵求建議時,我會感到非常驚訝,因爲我忽略了一個事實,那就是在沒有他們提供任何信息的情況下擲骰子。嘿,告訴我從我的地方到我想訪問的公司辦公室的路線。我不會告訴你我住在哪裏,也不知道我想去哪裏,但是請告訴我如何在那裏開車。得到它?

我在測試方法中使用兩個不同的數據庫。我能夠訪問 一個AviTrackEntities,但不能訪問其他ImportDataEntities。

然後你的代碼有問題或你的配置。你曾經學過如何製作錯誤報告?它涉及分析,併發布錯誤。我們如何知道沒有任何信息?

代碼中是否有缺陷或缺少什麼?

你完全錯過的是我們無法訪問源代碼,機器和你的大腦。我們無法爲您製作基本的錯誤報告。鑑於信息 - 修復它。是的,有些事情是錯的。什麼 - 沒有線索。你寧願不幫助我們幫助你。

由於數據庫的持久性,數據庫單元測試非常複雜。將數據庫重置爲已知的啓動狀態可能很複雜。