/// <summary> /// Specifies an existing <see cref="DbTransaction" /> to be used for database operations. /// </summary> /// <param name="transaction"> The transaction to be used. </param> public override IDbContextTransaction UseTransaction(DbTransaction transaction) { if (transaction == null) { if (CurrentTransaction != null) { CurrentTransaction = null; } } else { if (CurrentTransaction != null) { throw new InvalidOperationException(RelationalStrings.TransactionAlreadyStarted); } Open(); CurrentTransaction = new OracleRelationalTransaction( this, transaction, Dependencies.TransactionLogger, transactionOwned: false); Dependencies.TransactionLogger.TransactionUsed( this, transaction, CurrentTransaction.TransactionId, DateTimeOffset.UtcNow); } return(CurrentTransaction); }
private IDbContextTransaction BeginTransactionWithNoPreconditions(IsolationLevel isolationLevel) { DbTransaction dbTransaction = null; dbTransaction = DbConnection.BeginTransaction(isolationLevel); CurrentTransaction = new OracleRelationalTransaction( this, dbTransaction, Dependencies.TransactionLogger, transactionOwned: true); Dependencies.TransactionLogger.TransactionStarted( this, dbTransaction, CurrentTransaction.TransactionId, DateTimeOffset.UtcNow); return(CurrentTransaction); }