public void BeginTransaction()
        {
            if (IsInTransaction)
            {
                throw new ApplicationException("A transaction is already started!");
            }

            _transactionalState.BeginTransaction();
            _currentState = _transactionalState;
        }