/// <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"); } } }