public void BindByName() { var con = new Oracle.ManagedDataAccess.Client.OracleConnection(); var cmd = con.CreateCommand(); var wcon = new LoggingConnection(con); var wcmd = wcon.CreateCommand(); Assert.False(cmd.BindByName); Assert.True(wcmd.TryCast<Oracle.ManagedDataAccess.Client.OracleCommand>().BindByName); }
public LoggingTransaction(DbTransaction transaction, LoggingConnection connection, ILoggingWriter logger) { _transaction = RealTransaction(transaction) ?? throw new ArgumentNullException(nameof(transaction)); _connection = connection ?? throw new ArgumentNullException(nameof(connection)); _logger = logger; }
public void Transaction() { var conn = new System.Data.SQLite.SQLiteConnection("Data Source=:memory:"); using (var wconn = new LoggingConnection(conn)) { wconn.Open(); Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.StartsWith("コネクションを接続しました。 実行時間:", logger.Last.Message); using (var trans = wconn.BeginTransaction()) { Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("トランザクションを開始しました。", logger.Last.Message); trans.Commit(); Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Matches(@"トランザクションをコミットしました。 実行時間:\d\d:\d\d:\d\d\.\d+", logger.Last.Message); } Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("トランザクションが破棄(Dispose)されました。", logger.Last.Message); Assert.Null(logger.Last.Exception); using (var trans = wconn.BeginTransaction()) { Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("トランザクションを開始しました。", logger.Last.Message); trans.Rollback(); Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Matches(@"トランザクションをロールバックしました。 実行時間:\d\d:\d\d:\d\d\.\d+", logger.Last.Message); } Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("トランザクションが破棄(Dispose)されました。", logger.Last.Message); Assert.Null(logger.Last.Exception); using (var trans = wconn.BeginTransaction()) { Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("トランザクションを開始しました。", logger.Last.Message); } Assert.Equal(LogLevel.Error, logger.Last.Level); Assert.Equal("コミットもロールバックも実行されずに、トランザクションが破棄(Dispose)されました。", logger.Last.Message); Assert.Null(logger.Last.Exception); } Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("コネクションが破棄(Dispose)されました。", logger.Last.Message); Assert.Equal(10, logger.Items.Count); }
public void Connection() { using (var conn = new LoggingConnection(new System.Data.SQLite.SQLiteConnection("Data Source=:memory:"))) { conn.Open(); Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Matches(@"コネクションを接続しました。 実行時間:\d+:\d+:\d+\.\d+", logger.Last.Message); Assert.Null(logger.Last.Exception); var openException = Assert.Throws<InvalidOperationException>(() => conn.Open()); Assert.Equal(LogLevel.Error, logger.Last.Level); Assert.Equal(string.Format(@"接続に失敗 --- SQLiteConnection --- ConnectionString = {0} ConnectionTimeout = {1} Database = main State = Open ", conn.ConnectionString, conn.ConnectionTimeout), logger.Last.Message); Assert.Equal(openException, logger.Last.Exception); conn.Close(); Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("コネクションを閉じました。", logger.Last.Message); Assert.Null(logger.Last.Exception); } Assert.Equal(LogLevel.Trace, logger.Last.Level); Assert.Equal("コネクションが破棄(Dispose)されました。", logger.Last.Message); Assert.Null(logger.Last.Exception); }