public override void CreateDatabase(List <IEntityDescriptor> entityDescriptors, IDatabaseCreateEvents events = null) { 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"; //判断是否存在 var exist = File.Exists(dbFilePath); if (!exist) { //执行创建前事件 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 (!exist) { //执行创建前事件 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()) { 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(); //判断数据库是否已存在 var exist = con.ExecuteScalar($"SELECT 1 FROM pg_namespace WHERE nspname = '{Options.Database}' LIMIT 1;").ToInt() > 0; if (!exist) { //执行创建前事件 events?.Before().GetAwaiter().GetResult(); //创建数据库 con.Execute($"CREATE SCHEMA {Options.Database};"); } //创建表 foreach (var entityDescriptor in entityDescriptors) { if (!entityDescriptor.Ignore) { con.Execute(CreateTableSql(entityDescriptor)); } } if (!exist) { //执行创建后事件 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) { 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 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) { var sql = GetCreateTableSql(entityDescriptor); Logger?.LogInformation("执行创建表SQL:{@sql}", sql); cmd.CommandText = sql; cmd.ExecuteNonQuery(); } } } if (!databaseExists) { //执行创建后事件 events?.After().GetAwaiter().GetResult(); } }
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(); }
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) { 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(); }