/// <summary>
        /// Executes commit of transaction
        /// </summary>
        public void Commit()
        {
            //Se l'istanza è la proprietaria della transazione
            if (IsTransactionOwner)
            {
                //Imposto i flag per commit
                IsActive      = false;
                WasCommitted  = true;
                WasRolledBack = false;

                //Rimuovo il riferimento alla transazione
                _DataSession.SetActiveTransaction(this);
            }
        }
        /// <summary>
        /// Constructor
        /// </summary>
        public MockDataTransaction(IMockDataSession dataSession)
        {
            //Validazione argomenti
            if (dataSession == null)
            {
                throw new ArgumentNullException(nameof(dataSession));
            }

            //Imposto lo stato iniziale
            IsActive           = true;
            IsTransactionOwner = true;
            WasCommitted       = false;
            WasRolledBack      = false;

            //Imposto la data session
            _DataSession = dataSession;

            //Se già esiste una transanzione sull'holder, esco
            if (_DataSession.Transaction != null)
            {
                return;
            }

            //Imposto l'istanza corrente
            _DataSession.SetActiveTransaction(this);
        }