private static T Execute <T>(WrappedConnection wrappedConnection, string sql, Func <IDbCommand, T> query) { Check.NotNull(wrappedConnection, nameof(wrappedConnection)); Check.NotNullOrEmpty(sql, nameof(sql)); Check.NotNull(query, nameof(query)); bool wasClosed = wrappedConnection.DbConnection.State == ConnectionState.Closed; try { if (wasClosed) { wrappedConnection.Open(); } using (IDbCommand cmd = wrappedConnection.DbConnection.CreateCommand()) { cmd.CommandText = sql; cmd.Transaction = wrappedConnection.CurrentTx; return(query(cmd)); } } catch (Exception ex) { throw new EvolveSqlException(sql, ex); } finally { if (wasClosed) { wrappedConnection.Close(); } } }
public void When_opened_multiple_times_a_single_call_to_close_is_not_enought() { var cnn = _pgContainer.CreateDbConnection(); using (var wrappedConnection = new WrappedConnection(cnn)) { wrappedConnection.Open(); wrappedConnection.Open(); wrappedConnection.Open(); wrappedConnection.Close(); Assert.True(wrappedConnection.DbConnection.State == ConnectionState.Open); } Assert.True(cnn.State == ConnectionState.Closed); }
public void When_opened_multiple_times_a_single_call_to_close_is_not_enought() { var cnn = new SqliteConnection("Data Source=:memory:"); using (var wrappedConnection = new WrappedConnection(cnn)) { wrappedConnection.Open(); wrappedConnection.Open(); wrappedConnection.Open(); wrappedConnection.Close(); Assert.True(wrappedConnection.DbConnection.State == ConnectionState.Open); } Assert.True(cnn.State == ConnectionState.Closed); }
static SQLiteSchema LoadChinookDatabase(WrappedConnection cnn) { cnn.Open(); using var command = cnn.DbConnection.CreateCommand(); command.CommandText = TestContext.SQLite.ChinookScript; command.ExecuteNonQuery(); return(new SQLiteSchema(cnn)); }
public void When_disposed_inner_dbconnection_is_closed() { var cnn = new SqliteConnection("Data Source=:memory:"); using (var wrappedConnection = new WrappedConnection(cnn)) { wrappedConnection.Open(); } Assert.True(cnn.State == ConnectionState.Closed); }
public void When_disposed_inner_dbconnection_is_closed() { var cnn = _pgContainer.CreateDbConnection(); using (var wrappedConnection = new WrappedConnection(cnn)) { wrappedConnection.Open(); } Assert.True(cnn.State == ConnectionState.Closed); }
public static SQLiteSchema LoadChinookDatabase(WrappedConnection connection) { connection.Open(); using (var command = connection.DbConnection.CreateCommand()) { command.CommandText = File.ReadAllText(TestContext.ChinookScriptPath); command.ExecuteNonQuery(); } return(new SQLiteSchema(connection)); }
public override void Open() { _catalogHelpers = null; WrappedConnection.Open(); ExecSql("SET LOCKMODE session WHERE readlock=nolock"); if (JoinOPGreedy) { ExecSql("SET JOINOP GREEDY"); } if (JoinOPTimeout > 0) { ExecSql("SET JOINOP TIMEOUT " + JoinOPTimeout.ToString()); } }
/// <inheritdoc cref="DbConnection.Open()" /> public override void Open() { if (Profiler == null || !Profiler.IsEnabled) { WrappedConnection.Open(); return; } Profiler.OnOpening(this); WrappedConnection.Open(); Profiler.OnOpened(this); }
private static T Execute <T>(WrappedConnection wrappedConnection, string sql, Func <IDbCommand, T> query, Action <IDbCommand>?setupDbCommand = null) { Check.NotNull(wrappedConnection, nameof(wrappedConnection)); Check.NotNullOrEmpty(sql, nameof(sql)); Check.NotNull(query, nameof(query)); try { wrappedConnection.Open(); using var cmd = wrappedConnection.DbConnection.CreateCommand(); cmd.CommandText = sql; cmd.Transaction = wrappedConnection.CurrentTx; setupDbCommand?.Invoke(cmd); // Do not close the connection since it will release the database // lock used to prevent concurrent execution of Evolve. return(query(cmd)); } catch (Exception ex) { throw new EvolveSqlException(sql, ex); } }