我有以下使用SqlTransaction的代碼。我已經在catch中調用了dispose,並最終阻塞了..但是在調用Dispose()之前,我沒有檢查它是否已經處理。我們如何在調用Dispose()之前檢查SqlTransaction是否已經處理?如何在處理SqlTransaction之前檢查狀態
我參考了MSDN:SqlTransaction.Dispose Method。但那不包括我的問題。
也稱爲http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.dispose(v=vs.100).aspx
注:我已經知道TransactionScope
擁有SqlTransaction
優勢。但我想了解SqlTransaction的dispose。
CODE
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlTransaction transaction = null;
try
{
transaction = connection.BeginTransaction();
sessionID = GetSessionIDForAssociate(connection, empID, transaction);
//Other code
//Commit
transaction.Commit();
}
catch
{
//Rollback
if (transaction != null)
{
transaction.Rollback();
transaction.Dispose();
}
//Throw exception
throw;
}
finally
{
if (transaction != null)
{
transaction.Dispose();
}
}