爲了從未受髒數據影響的應用程序的一部分中選擇數據,我創建了一個TransactionScope,該TransactionScope指定一個ReadUncommitted IsolationLevel來自Hanselman的建議here。僅存在用於選擇數據的TransactionScope是否需要調用Complete()
我的問題是,我仍然需要在使用塊的末尾執行oTS.Complete()調用,即使此事務作用域不是爲了在插入過程中跨2個數據庫橋接對象依賴性而構建的,更新或刪除?
例:
List<string> oStrings = null;
using (SomeDataContext oCtxt = new SomeDataContext (sConnStr))
using (TransactionScope oTS = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
oStrings = oCtxt.EStrings.ToList();
oTS.Complete();
}
從http://msdn.microsoft.com/en-us/library/ms172152.aspx開始,「當TransactionScope對象加入現有的環境事務時,處置範圍對象可能不會結束事務,除非範圍中止如果環境事務是由根作用域創建的,那麼只有當根作用域被處理時,Commit纔會被調用到事務上,如果事務是手動創建的,事務會在中止或者被提交時結束它的創造者「。 – fordareh 2010-04-29 19:49:57