public void TestGeneratedSqlForInsert() { //arrange var table = LoadCategoriesFromNorthwind(); var writer = new SqlWriter(table, SqlType.SqlServer); var sql = writer.InsertSql(); int identity; //run generated sql using (var con = _factory.CreateConnection()) { con.ConnectionString = _connectionString; con.Open(); using (var transaction = con.BeginTransaction()) { using (var cmd = con.CreateCommand()) { cmd.CommandText = sql; cmd.Transaction = transaction; string identityParameterName = "Id"; foreach (var column in table.Columns) { var par = cmd.CreateParameter(); par.ParameterName = writer.ParameterName(column.Name); if (column.IsAutoNumber) { //get the name of the identity parameter identityParameterName = par.ParameterName; par.Direction = ParameterDirection.Output; par.DbType = DbType.Int32; } else { object value = DummyDataCreator.CreateData(column); par.Value = value ?? DBNull.Value; } cmd.Parameters.Add(par); } cmd.ExecuteNonQuery(); identity = (int)cmd.Parameters[identityParameterName].Value; } //explicit rollback. If we errored, implicit rollback. transaction.Rollback(); } } //assert Assert.AreNotEqual(0, identity); }
public void TestGeneratedSqlForInsert() { //arrange var table = LoadRegionsFromHr(); var writer = new SqlWriter(table, SqlType.Oracle); var sql = writer.InsertSql(); //run generated sql using (var con = _factory.CreateConnection()) { con.ConnectionString = ConnectionString; con.Open(); using (var transaction = con.BeginTransaction()) { using (var cmd = con.CreateCommand()) { cmd.CommandText = sql; cmd.Transaction = transaction; foreach (var column in table.Columns) { var par = cmd.CreateParameter(); par.ParameterName = writer.ParameterName(column.Name); if (column.IsAutoNumber) { //we could be using sequences here par.Direction = ParameterDirection.Output; par.DbType = DbType.Int32; } else { object value = DummyDataCreator.CreateData(column); par.Value = value ?? DBNull.Value; } cmd.Parameters.Add(par); } cmd.ExecuteNonQuery(); } //explicit rollback. If we errored, implicit rollback. transaction.Rollback(); } } //assert }
public void TestGeneratedSqlForInsert() { //arrange var table = LoadCategoriesFromNorthwind(); var writer = new SqlWriter(table, SqlType.SQLite); var sql = writer.InsertSql(); int identity; //run generated sql using (var con = _factory.CreateConnection()) { con.ConnectionString = _connectionString; con.Open(); using (var transaction = con.BeginTransaction()) { using (var cmd = con.CreateCommand()) { cmd.CommandText = sql; cmd.Transaction = transaction; foreach (var column in table.Columns) { if (column.IsAutoNumber) continue; var par = cmd.CreateParameter(); par.ParameterName = writer.ParameterName(column.Name); object value = DummyDataCreator.CreateData(column); par.Value = value ?? DBNull.Value; cmd.Parameters.Add(par); } identity = Convert.ToInt32(cmd.ExecuteScalar()); } //explicit rollback. If we errored, implicit rollback. transaction.Rollback(); } } //assert Assert.AreNotEqual(0, identity); }