예제 #1
0
        void InitDb()
        {
            if (_factory.Provider == DatabaseProvider.PostgreSql)
            {
                PgDbSetting ps = new PgDbSetting();

                Npgsql.NpgsqlConnectionStringBuilder sb = new Npgsql.NpgsqlConnectionStringBuilder(ps.ConnectionString);
                sb.Database         = "postgres";
                ps.ConnectionString = sb.ToString();

                AnyDbFactory f = new AnyDbFactory(ps);
                using (AnyDbConnection con = f.OpenConnection())
                {
                    con.Execute("drop database if exists qb_test");
                    con.Execute("create database qb_test");
                }
            }
            if (_factory.Provider == DatabaseProvider.SqLite)
            {
                Microsoft.Data.Sqlite.SqliteConnectionStringBuilder sb = new Microsoft.Data.Sqlite.SqliteConnectionStringBuilder(_factory.ConnectionString);
                if (File.Exists(sb.DataSource))
                {
                    File.Delete(sb.DataSource);
                }
            }
            using (AnyDbConnection con = _factory.OpenConnection())
            {
                con.Execute(@"
CREATE TABLE customer (
	id serial NOT NULL,
	first_name varchar(50) NULL,
	last_name varchar(50) NULL,
	CONSTRAINT customer_pk PRIMARY KEY (id)
);");
                for (int i = 0; i < 100; i++)
                {
                    con.Execute($"insert into customer (first_name, last_name) values ('F_{i}', 'L_{i}')");
                }
            }
        }
        public static int Execute(this AnyDbConnection cnn, Delete query, IDbTransaction transaction = null,
                                  int?commandTimeout = null)
        {
            string sql = GetDeleteSql(cnn, query);

            if (!commandTimeout.HasValue)
            {
                commandTimeout = cnn.DefaultCommandTimeout;
            }
            DynamicParameters parameters = GetParameters(query.Query.CommandParams);

            return(cnn.Execute(sql, parameters, transaction, commandTimeout, CommandType.Text));
        }
        public static long Execute(this AnyDbConnection cnn, Insert query, IDbTransaction transaction = null,
                                   int?commandTimeout = null)
        {
            string sql = GetInsertSql(cnn, query);

            if (!commandTimeout.HasValue)
            {
                commandTimeout = cnn.DefaultCommandTimeout;
            }
            DynamicParameters parameters = GetParameters(query.Query.CommandParams);
            bool returnIdentity          = !string.IsNullOrEmpty(query.Query.IdentityField);

            if (!returnIdentity)
            {
                return(Convert.ToInt64(cnn.Execute(sql, parameters, transaction, commandTimeout, CommandType.Text)));
            }
            return(Convert.ToInt64(cnn.ExecuteScalar(sql, parameters, transaction, commandTimeout, CommandType.Text)));
        }