private void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_transaction != null)
                {
                    try
                    {
                        _transaction.Commit(); //commit is faster than rollback, so we try..
                    }
                    catch (Exception ex)
                    {
                        GC.KeepAlive(ex);
                    }
                    finally
                    {
                        _transaction.SafeDispose();
                        _transaction = null;
                    }
                }

                _connection.SafeDispose();
                _connection = null;
            }
        }