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);
        }
示例#2
0
        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;
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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();
        }
示例#6
0
        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));
        }