我有以下使用 SqlTransaction 的代码。我已经在 catch 中调用了 dispose 并最终阻塞了.. 但是在调用 Dispose() 之前我没有检查它是否已经被释放。我们如何在调用 Dispose() 之前检查 SqlTransaction 是否已经被释放?
我提到了MSDN:SqlTransaction.Dispose Method。但这不包括我的问题。
也参考http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.dispose(v=vs.100).aspx
注意:我已经知道它TransactionScope
比SqlTransaction
. 但我试图了解 SqlTransaction 的处置。
代码
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();
}
}