public override void AfterRollback(DataAccessModelHookRollbackContext context)
            {
                Console.WriteLine($"AfterRollback {context.DataAccessTransactionId} {context.TransactionContextId}");

                this.RollbackCount++;

                base.AfterRollback(context);
            }
            public override Task AfterRollbackAsync(DataAccessModelHookRollbackContext context, CancellationToken cancellationToken)
            {
                Console.WriteLine($"AfterRollbackAsync {context.DataAccessTransactionId} {context.TransactionContextId}");

                this.RollbackCount++;

                return(base.AfterRollbackAsync(context, cancellationToken));
            }
        public virtual void Rollback()
        {
            var context = new DataAccessModelHookRollbackContext(this.TransactionContext);

            try
            {
                ((IDataAccessModelInternal)this.DataAccessModel).OnHookBeforeRollback(context);
            }
            catch
            {
                // ignored
            }

            try
            {
                if (this.dbTransaction != null)
                {
                    this.dbTransaction.Rollback();
                    this.dbTransaction.Dispose();
                    this.dbTransaction = null;
                }
            }
            finally
            {
                CloseConnection();

                try
                {
                    ((IDataAccessModelInternal)this.DataAccessModel).OnHookAfterRollback(context);
                }
                catch
                {
                    // ignored
                }
            }
        }