Beispiel #1
0
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
        {
            var connStrBuilder = new SqlConnectionStringBuilder
            {
                DataSource = DbOptions.Port > 0 ? DbOptions.Server + "," + DbOptions.Port : DbOptions.Server,
                UserID     = DbOptions.UserId,
                Password   = DbOptions.Password,
                MultipleActiveResultSets = true,
                InitialCatalog           = "master"
            };

            using var con = new SqlConnection(connStrBuilder.ToString());
            con.Open();
            var cmd = con.CreateCommand();

            cmd.CommandType = System.Data.CommandType.Text;

            //判断数据库是否已存在
            cmd.CommandText = $"SELECT TOP 1 1 FROM sysdatabases WHERE name = '{Options.Database}'";
            databaseExists  = cmd.ExecuteScalar().ToInt() > 0;
            if (!databaseExists)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();

                //创建数据库
                cmd.CommandText = $"CREATE DATABASE [{Options.Database}]";
                cmd.ExecuteNonQuery();
            }

            cmd.CommandText = $"USE [{Options.Database}];";
            cmd.ExecuteNonQuery();

            //创建表
            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    cmd.CommandText = $"SELECT TOP 1 1 FROM sysobjects WHERE id = OBJECT_ID(N'{entityDescriptor.TableName}') AND xtype = 'U';";
                    var obj = cmd.ExecuteScalar();
                    if (obj.ToInt() < 1)
                    {
                        cmd.CommandText = CreateTableSql(entityDescriptor);
                        cmd.ExecuteNonQuery();
                    }
                }
            }

            if (!databaseExists)
            {
                //执行创建后事件
                events?.After().GetAwaiter().GetResult();
            }
        }
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
        {
            string dbFilePath = Path.Combine(AppContext.BaseDirectory, "Db");

            if (DbOptions.Server.NotNull())
            {
                dbFilePath = Path.GetFullPath(DbOptions.Server);
            }

            if (!Directory.Exists(dbFilePath))
            {
                Directory.CreateDirectory(dbFilePath);
            }

            dbFilePath = Path.Combine(dbFilePath, Options.Database) + ".db";

            //判断是否存在
            databaseExists = File.Exists(dbFilePath);

            if (!databaseExists)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();
            }

            var connStrBuilder = new SqliteConnectionStringBuilder
            {
                DataSource = $"{dbFilePath}",
                Mode       = SqliteOpenMode.ReadWriteCreate
            };

            using var con = new SqliteConnection(connStrBuilder.ToString());
            con.Open();
            var cmd = con.CreateCommand();

            cmd.CommandType = System.Data.CommandType.Text;

            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    cmd.CommandText =
                        $"SELECT 1 FROM sqlite_master WHERE type = 'table' and name='{entityDescriptor.TableName}';";
                    var obj = cmd.ExecuteScalar();
                    if (obj.ToInt() < 1)
                    {
                        cmd.CommandText = CreateTableSql(entityDescriptor);
                        cmd.ExecuteNonQuery();
                    }
                }
            }

            if (!databaseExists)
            {
                //执行创建前事件
                events?.After().GetAwaiter().GetResult();
            }
        }
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events = null)
        {
            var connStrBuilder = new NpgsqlConnectionStringBuilder
            {
                Host     = DbOptions.Server,
                Port     = DbOptions.Port > 0 ? DbOptions.Port : 5432,
                Database = "postgres",
                Username = DbOptions.UserId,
                Password = DbOptions.Password
            };

            if (DbOptions.NpgsqlDatabaseName.NotNull())
            {
                connStrBuilder.Database = DbOptions.NpgsqlDatabaseName;
            }

            using var con = new NpgsqlConnection(connStrBuilder.ToString());
            con.Open();
            var cmd = con.CreateCommand();

            cmd.CommandType = System.Data.CommandType.Text;

            //判断数据库是否已存在
            cmd.CommandText = $"SELECT 1 FROM pg_namespace WHERE nspname = '{Options.Database}' LIMIT 1;";
            var exist = cmd.ExecuteScalar().ToInt() > 0;

            if (!exist)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();

                //创建数据库
                cmd.CommandText = $"CREATE SCHEMA {Options.Database};";
                cmd.ExecuteNonQuery();
            }

            //创建表
            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    cmd.CommandText = CreateTableSql(entityDescriptor);
                    cmd.ExecuteNonQuery();
                }
            }

            if (!exist)
            {
                //执行创建后事件
                events?.After().GetAwaiter().GetResult();
            }
        }
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
        {
            var connStrBuilder = new NpgsqlConnectionStringBuilder
            {
                Host     = DbOptions.Server,
                Port     = DbOptions.Port > 0 ? DbOptions.Port : 5432,
                Database = "postgres",
                Username = DbOptions.UserId,
                Password = DbOptions.Password
            };

            if (DbOptions.NpgsqlDatabaseName.NotNull())
            {
                using var con1 = new NpgsqlConnection(connStrBuilder.ToString());
                con1.Open();
                var existsDatabase = con1.ExecuteScalar($"SELECT 1 FROM pg_catalog.pg_database u where u.datname='{DbOptions.NpgsqlDatabaseName}';").ToInt() > 0;
                if (!existsDatabase)
                {
                    //创建数据库
                    con1.Execute($"CREATE DATABASE {DbOptions.NpgsqlDatabaseName};");
                }
                con1.Close();

                connStrBuilder.Database = DbOptions.NpgsqlDatabaseName;
            }

            using var con = new NpgsqlConnection(connStrBuilder.ToString());
            con.Open();

            //判断数据库是否已存在
            databaseExists = con.ExecuteScalar($"SELECT 1 FROM pg_namespace WHERE nspname = '{Options.Database}' LIMIT 1;").ToInt() > 0;
            if (!databaseExists)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();

                //创建数据库
                con.Execute($"CREATE SCHEMA {Options.Database};");
            }

            //创建表
            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    con.Execute(CreateTableSql(entityDescriptor));
                }
            }

            if (!databaseExists)
            {
                //执行创建后事件
                events?.After().GetAwaiter().GetResult();
            }

            con.Close();
        }
Beispiel #5
0
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
        {
            using var con = new MySqlConnection(ConnectionStringBuild("mysql"));
            con.Open();
            var cmd = con.CreateCommand();

            cmd.CommandType = System.Data.CommandType.Text;

            //判断数据库是否已存在
            cmd.CommandText = $"SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '{Options.Database}' LIMIT 1;";
            databaseExists  = cmd.ExecuteScalar().ToInt() > 0;
            if (!databaseExists)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();

                //创建数据库
                cmd.CommandText = $"CREATE DATABASE {Options.Database} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;";
                cmd.ExecuteNonQuery();
            }

            cmd.CommandText = $"USE `{Options.Database}`;";
            cmd.ExecuteNonQuery();

            //创建表
            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    var sql = GetCreateTableSql(entityDescriptor);
                    Logger?.LogInformation("执行创建表SQL:{@sql}", sql);
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
            }

            if (!databaseExists)
            {
                //执行创建后事件
                events?.After().GetAwaiter().GetResult();
            }

            con.Close();
        }
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
        {
            var connStrBuilder = new MySqlConnectionStringBuilder
            {
                Server                  = DbOptions.Server,
                Port                    = DbOptions.Port > 0 ? (uint)DbOptions.Port : 3306,
                Database                = "mysql",
                UserID                  = DbOptions.UserId,
                Password                = DbOptions.Password,
                AllowUserVariables      = true,
                CharacterSet            = "utf8",
                SslMode                 = MySqlSslMode.None,
                AllowPublicKeyRetrieval = true
            };

            using var con = new MySqlConnection(connStrBuilder.ToString());
            con.Open();
            var cmd = con.CreateCommand();

            cmd.CommandType = System.Data.CommandType.Text;

            //判断数据库是否已存在
            cmd.CommandText = $"SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '{Options.Database}' LIMIT 1;";
            databaseExists  = cmd.ExecuteScalar().ToInt() > 0;
            if (!databaseExists)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();

                //创建数据库
                cmd.CommandText = $"CREATE DATABASE {Options.Database} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;";
                cmd.ExecuteNonQuery();
            }

            cmd.CommandText = $"USE `{Options.Database}`;";
            cmd.ExecuteNonQuery();

            //创建表
            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    cmd.CommandText = CreateTableSql(entityDescriptor);
                    cmd.ExecuteNonQuery();
                }
            }

            if (!databaseExists)
            {
                //执行创建后事件
                events?.After().GetAwaiter().GetResult();
            }
        }
Beispiel #7
0
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
        {
            if (DbOptions.NpgsqlDatabaseName.NotNull())
            {
                using var con1 = new NpgsqlConnection(ConnectionStringBuild("postgres"));
                con1.Open();
                var existsDatabase = con1.ExecuteScalar($"SELECT 1 FROM pg_catalog.pg_database u where u.datname='{DbOptions.NpgsqlDatabaseName}';").ToInt() > 0;
                if (!existsDatabase)
                {
                    //创建数据库
                    con1.Execute($"CREATE DATABASE {DbOptions.NpgsqlDatabaseName};");
                }
                con1.Close();
            }

            using var con = new NpgsqlConnection(Options.ConnectionString);
            con.Open();
            var cmd = con.CreateCommand();

            cmd.CommandType = System.Data.CommandType.Text;

            //判断数据库是否已存在
            cmd.CommandText = $"SELECT 1 FROM pg_namespace WHERE nspname = '{Options.Database}' LIMIT 1;";
            databaseExists  = cmd.ExecuteScalar().ToInt() > 0;
            if (!databaseExists)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();

                //创建数据库
                cmd.CommandText = $"CREATE SCHEMA {Options.Database};";
                cmd.ExecuteNonQuery();
            }

            //创建表
            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    var sql = GetCreateTableSql(entityDescriptor);
                    Logger?.LogInformation("执行创建表SQL:{@sql}", sql);
                    cmd.CommandText = sql;
                    con.Execute(GetCreateTableSql(entityDescriptor));
                }
            }

            if (!databaseExists)
            {
                //执行创建后事件
                events?.After().GetAwaiter().GetResult();
            }

            con.Close();
        }
Beispiel #8
0
        public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
        {
            using var con = new SqlConnection(ConnectionStringBuild("master"));
            con.Open();
            var cmd = con.CreateCommand();

            cmd.CommandType = System.Data.CommandType.Text;

            //判断数据库是否已存在
            cmd.CommandText = $"SELECT TOP 1 1 FROM sysdatabases WHERE name = '{Options.Database}'";
            databaseExists  = cmd.ExecuteScalar().ToInt() > 0;
            if (!databaseExists)
            {
                //执行创建前事件
                events?.Before().GetAwaiter().GetResult();

                //创建数据库
                cmd.CommandText = $"CREATE DATABASE [{Options.Database}]";
                cmd.ExecuteNonQuery();
            }

            cmd.CommandText = $"USE [{Options.Database}];";
            cmd.ExecuteNonQuery();

            //创建表
            foreach (var entityDescriptor in entityDescriptors)
            {
                if (!entityDescriptor.Ignore)
                {
                    cmd.CommandText = $"SELECT TOP 1 1 FROM sysobjects WHERE id = OBJECT_ID(N'{entityDescriptor.TableName}') AND xtype = 'U';";
                    var obj = cmd.ExecuteScalar();
                    if (obj.ToInt() < 1)
                    {
                        var sql = GetCreateTableSql(entityDescriptor);
                        Logger?.LogInformation("执行创建表SQL:{@sql}", sql);
                        cmd.CommandText = sql;
                        cmd.ExecuteNonQuery();
                    }
                }
            }

            if (!databaseExists)
            {
                //执行创建后事件
                events?.After().GetAwaiter().GetResult();
            }
        }
 public abstract void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists);
Beispiel #10
0
 public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events, out bool databaseExists)
 {
     throw new NotImplementedException();
 }
 public abstract void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events = null);