示例#1
0
        /// <summary>
        /// Commit or rollback nested transaction groups
        /// </summary>
        /// <param name="operationType">The operation type determines whether to commit or to rollback transaction groups</param>
        private void HandleNestedTransactionGroups(OperationType operationType)
        {
            while (m_transactionGroup != null)
            {
                if (operationType.Equals(OperationType.CommitTransactionGroup))
                {
                    m_transactionGroup.Commit();
                }
                else
                {
                    m_transactionGroup.RollBack();
                }

                if (m_transactionGroup.HasEnded())
                {
                    m_transGroupNode = m_transGroupNode.Parent;
                    if (m_transGroupNode.Equals(m_rootNode))
                    {
                        m_transactionGroup = null;
                    }
                    else
                    {
                        m_transactionGroup = m_transGroupNode.Tag as TransactionGroup;
                    }
                }
                else
                {
                    throw new System.ApplicationException("Could not end a transaction group");
                }
            }
        }