private int?PreExecution(IRelationalConnection connection) { int?errorNumber = null; var testConnection = (TestMySqlConnection)connection; testConnection.ExecutionCount++; if (testConnection.ExecutionFailures.Count > 0) { var fail = testConnection.ExecutionFailures.Dequeue(); if (fail.HasValue) { if (fail.Value) { testConnection.DbConnection.Close(); throw SqlExceptionFactory.CreateSqlException(testConnection.ErrorNumber); } errorNumber = testConnection.ErrorNumber; } } return(errorNumber); }
public override void Commit() { if (_testConnection.CommitFailures.Count > 0) { var fail = _testConnection.CommitFailures.Dequeue(); if (fail.HasValue) { if (fail.Value) { this.GetDbTransaction().Rollback(); } else { this.GetDbTransaction().Commit(); } _testConnection.DbConnection.Close(); throw SqlExceptionFactory.CreateSqlException(_testConnection.ErrorNumber, _testConnection.ConnectionId); } } base.Commit(); }
public override async Task CommitAsync(CancellationToken cancellationToken = default) { if (_testConnection.CommitFailures.Count > 0) { var fail = _testConnection.CommitFailures.Dequeue(); if (fail.HasValue) { if (fail.Value) { await this.GetDbTransaction().RollbackAsync(cancellationToken); } else { await this.GetDbTransaction().CommitAsync(cancellationToken); } await _testConnection.DbConnection.CloseAsync(); throw SqlExceptionFactory.CreateSqlException(_testConnection.ErrorNumber, _testConnection.ConnectionId); } } await base.CommitAsync(cancellationToken); }