private void CommitInternal()
        {
            if (null == _transaction)
            {
                return;
            }
            if (null != _nestedTransaction)
            {
                OleDbTransaction transaction = (OleDbTransaction)_nestedTransaction.Target;
                if ((null != transaction) && _nestedTransaction.IsAlive)
                {
                    transaction.CommitInternal();
                }
                _nestedTransaction = null;
            }
            OleDbHResult hr = _transaction.Commit();

            if (!_transaction.MustComplete)
            {
                _transaction.Dispose();
                _transaction = null;

                DisposeManaged();
            }
            if (hr < 0)
            {
                // if an exception is thrown, user can try to commit their transaction again
                ProcessResults(hr);
            }
        }
        internal void BeginInternal(UnsafeNativeMethods.ITransactionLocal transaction)
        {
            OleDbHResult hr;

            _transaction = new WrappedTransaction(transaction, (int)_isolationLevel, out hr);
            if (hr < 0)
            {
                _transaction.Dispose();
                _transaction = null;
                ProcessResults(hr);
            }
        }
 internal void BeginInternal(UnsafeNativeMethods.ITransactionLocal transaction) {
     OleDbHResult hr;
     _transaction = new WrappedTransaction(transaction, (int) _isolationLevel, out hr);
     if (hr < 0) {
         _transaction.Dispose();
         _transaction = null;                
         ProcessResults(hr);
     }
 }