public static int Update <T>(this IDbConnection connection, T entity, IDbTransaction transaction = null, int?commandTimeout = null, params Expression <Func <T, object> >[] sortOn) where T : class { var query = Tuxedo.Update(entity); var result = connection.Execute(query.Sql, Prepare(query.Parameters), transaction, commandTimeout); return(result); }
private static void SetCommandText <T>(IDbCommand command, T example) { var dialect = Tuxedo.Dialect; Tuxedo.Dialect = Dialect; command.CommandText = Tuxedo.Insert(example).Sql; Tuxedo.Dialect = dialect; }
public void Update_with_no_where() { var query = Tuxedo.Update <User>(new { Email = "*****@*****.**" }); Assert.AreEqual("UPDATE User SET Email = @Email_set", query.Sql); Assert.AreEqual(1, query.Parameters.Count); Assert.AreEqual("*****@*****.**", query.Parameters["@Email_set"]); Console.WriteLine(query); }
public void Insert_one() { var query = Tuxedo.Insert(new User { Email = "*****@*****.**" }); Assert.AreEqual("INSERT INTO User (Email) VALUES (@Email)", query.Sql); Assert.AreEqual(1, query.Parameters.Count); Assert.AreEqual("*****@*****.**", query.Parameters["@Email"]); Console.WriteLine(query); }
public void Update_with_instances() { var user1 = new User { Id = 1, Email = "*****@*****.**" }; var user2 = new User { Id = 2, Email = "*****@*****.**" }; var query = Tuxedo.Update <User>(new [] { user1, user2 }); Assert.Fail(); }
public string MultiValueInsert(Descriptor descriptor, int blockSize) { IDictionary <int, string> store; if (!MultiValueInserts.TryGetValue(descriptor, out store)) { store = new Dictionary <int, string>(); MultiValueInserts.Add(descriptor, store); } string sql; if (!store.TryGetValue(blockSize, out sql)) { var columns = descriptor.Insertable.ToArray(); var parameters = new List <string>(); var columnNames = new List <string>(); var dialect = Tuxedo.Dialect; Tuxedo.Dialect = Dialect; foreach (var column in columns) { columnNames.Add(column.ColumnName); for (var i = 0; i < blockSize; i++) { parameters.Add(string.Concat("@", column.ColumnName, "_", i)); } } sql = string.Concat("INSERT INTO ", Tuxedo.TableName(descriptor), " (", columnNames.ConcatQualified(Dialect), ") VALUES "); var sqlValues = new List <string>(); var index = 0; for (var i = 0; i < blockSize; i++) { var slice = new List <string>(); for (var j = 0; j < columns.Length; j++) { slice.Add(parameters[index]); } sqlValues.Add(string.Concat("(", slice.Concat(), ")")); index++; } sql = string.Concat(sql, sqlValues.Concat()); store.Add(blockSize, sql); Tuxedo.Dialect = dialect; } return(sql); }
public static T Insert <T>(this IDbConnection connection, T entity, IDbTransaction transaction = null, int?commandTimeout = null) where T : class { var descriptor = Tuxedo.GetDescriptor <T>(); var insert = Tuxedo.Insert(entity); var sql = insert.Sql; if (descriptor.Identity != null) { sql = string.Concat(sql, "; ", Tuxedo.Identity()); var result = connection.Query <int>(sql, Prepare(insert.Parameters), transaction, true, commandTimeout).Single(); MapBackId(descriptor, entity, result); } else { connection.Execute(sql, Prepare(insert.Parameters), transaction, commandTimeout); } return(entity); }
public static int DeleteAll <T>(this IDbConnection connection, IDbTransaction transaction = null, int?commandTimeout = null, params Expression <Func <T, object> >[] sortOn) where T : class { var query = Tuxedo.DeleteAll <T>(); return(connection.Execute(query.Sql, Prepare(query.Parameters), transaction, commandTimeout)); }