/// <summary> /// Specifies an existing <see cref="DbTransaction"/> to be used for database operations. /// </summary> /// <param name="transaction"> The transaction to be used. </param> public virtual IDbContextTransaction UseTransaction(DbTransaction transaction) { if (transaction == null) { if (CurrentTransaction != null) { CurrentTransaction = null; Close(); } } else { if (CurrentTransaction != null) { throw new InvalidOperationException(RelationalStrings.TransactionAlreadyStarted); } Open(); CurrentTransaction = new RelationalTransaction(this, transaction, _logger, transactionOwned: false); } return(CurrentTransaction); }
public void GetDbTransaction_returns_the_DbTransaction() { var dbConnection = new FakeDbConnection(ConnectionString); var dbTransaction = new FakeDbTransaction(dbConnection); var connection = new FakeRelationalConnection( CreateOptions((FakeRelationalOptionsExtension) new FakeRelationalOptionsExtension().WithConnection(dbConnection))); var loggerFactory = new ListLoggerFactory(); var transaction = new RelationalTransaction( connection, dbTransaction, new Guid(), new DiagnosticsLogger <DbLoggerCategory.Database.Transaction>( loggerFactory, new LoggingOptions(), new DiagnosticListener("Fake"), new TestRelationalLoggingDefinitions(), new NullDbContextLogger()), false, new RelationalSqlGenerationHelper( new RelationalSqlGenerationHelperDependencies())); Assert.Equal(dbTransaction, transaction.GetDbTransaction()); }
private IDbContextTransaction BeginTransactionWithNoPreconditions(IsolationLevel isolationLevel) { Dependencies.TransactionLogger.LogDebug( RelationalEventId.BeginningTransaction, isolationLevel, il => RelationalStrings.RelationalLoggerBeginningTransaction(il.ToString("G"))); CurrentTransaction = new RelationalTransaction( this, DbConnection.BeginTransaction(isolationLevel), Dependencies.TransactionLogger, DiagnosticSource, transactionOwned: true); return(CurrentTransaction); }
private IDbContextTransaction BeginTransactionWithNoPreconditions(IsolationLevel isolationLevel) { Check.NotNull(_logger, nameof(_logger)); _logger.LogDebug( RelationalEventId.BeginningTransaction, isolationLevel, il => RelationalStrings.RelationalLoggerBeginningTransaction(il.ToString("G"))); CurrentTransaction = new RelationalTransaction( this, DbConnection.BeginTransaction(isolationLevel), _logger, transactionOwned: true); return(CurrentTransaction); }
public void GetDbTransaction_returns_the_DbTransaction() { var dbConnection = new FakeDbConnection(ConnectionString); var dbTransaction = new FakeDbTransaction(dbConnection); var connection = new FakeRelationalConnection( CreateOptions(new FakeRelationalOptionsExtension { Connection = dbConnection })); var transaction = new RelationalTransaction( connection, dbTransaction, new ListLogger(new List <Tuple <LogLevel, string> >()), false); Assert.Equal(dbTransaction, transaction.GetDbTransaction()); }
public void GetDbTransaction_returns_the_DbTransaction() { var dbConnection = new FakeDbConnection(ConnectionString); var dbTransaction = new FakeDbTransaction(dbConnection); var connection = new FakeRelationalConnection( CreateOptions((FakeRelationalOptionsExtension) new FakeRelationalOptionsExtension().WithConnection(dbConnection))); var loggerFactory = new ListLoggerFactory(); var transaction = new RelationalTransaction( connection, dbTransaction, new DiagnosticsLogger <DbLoggerCategory.Database.Transaction>( loggerFactory, new LoggingOptions(), new DiagnosticListener("Fake")), false); Assert.Equal(dbTransaction, transaction.GetDbTransaction()); }