SqlTransaction を使用する次のコードがあります。Dispose を catch で呼び出して、finally ブロックしました。しかし、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();
                }
            }