#pragma warning restore CS8618 // Non-nullable field is uninitialized. Consider declaring as nullable. public static async Task Main(string[] args) { Console.WriteLine($"Starting at {DateTime.UtcNow}"); _ = Task.Run(async() => { try { IHostBuilder builder = CreateHostBuilder(args); _Host = builder.Build(); using (IServiceScope? scope = _Host.Services.CreateScope()) { if (scope != null) { IDbCreator creator = scope.ServiceProvider.GetRequiredService <IDbCreator>(); await creator.Execute(); Console.WriteLine($"Executed IDbCreator"); } } await _Host.RunAsync(); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } }); await Task.Delay(1000); if (_Host == null) { Console.Error.WriteLine($"Host is null, cannot add commands"); } else { ICommandBus?commands = _Host.Services.GetService(typeof(ICommandBus)) as ICommandBus; if (commands == null) { Console.Error.WriteLine($"Missing ICommandBus"); } string line = ""; while (line != ".close") { line = Console.ReadLine(); if (line == ".close") { break; } else { if (commands != null) { await commands.Execute(line); } } } await _Host.StopAsync(); } }
/// <summary> /// Creates DB according CDBObject /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string CreateDatabase(DataBaseInfo obj, string connectionString, string login = null, string password = null) { IDbCreator creator = null; switch (obj.DbmsType) { case DbmsType.SqlServer: creator = new SqlServerCreator(obj.Name); break; } string cs; if (obj.IsPublic) { cs = creator.CreateNewDatabaseWithRandomLogin(); } else if (!string.IsNullOrEmpty(login) && !string.IsNullOrEmpty(password)) { cs = creator.CreateNewDatabaseWithProtection(login, password); } else { throw new ArgumentException("Lack of arguments."); } cs = cs.Replace("SERVERNAME", connectionString); return(cs); }
private static IDbCreator msSqlCreator;//使用静态变量缓存MsSqlDbCreator /// <summary> /// Ctor /// </summary> /// <param name="connectString"></param> public MsSqlDbProvider(string connectString) : base(connectString) { if (msSqlCreator == null) { msSqlCreator = new MsSqlDbCreator(); } this.dbCreator = msSqlCreator; }
private static IDbCreator sqliteCreator;//使用静态变量缓存MsSqlDbCreator /// <summary> /// Ctor /// </summary> /// <param name="connectString"></param> public SqliteDbProvider(string connectString) : base(connectString) { if (sqliteCreator == null) { sqliteCreator = new SqliteDbCreator(); } this.dbCreator = sqliteCreator; }
private static IDbCreator postgreSqlCreator;//使用静态变量缓存PostgreSqlDbCreator /// <summary> /// Ctor /// </summary> /// <param name="connectString"></param> public PostgreSqlDbProvider(string connectString) : base(connectString) { if (postgreSqlCreator == null) { postgreSqlCreator = new PostgreSqlDbCreator(); } this.dbCreator = postgreSqlCreator; }
private static IDbCreator postgreSqlCreator;//使用静态变量缓存PostgreSqlDbCreator /// <summary> /// Ctor /// </summary> /// <param name="connectString"></param> public PostgreSqlDbProvider(string connectString) : base(connectString) { if (postgreSqlCreator == null) { //使用静态变量缓存PostgreSqlDbCreator Assembly assembly; string assemblyName = "Jc.Core.PostgreSql"; string className = "PostgreSqlDbCreator"; try { //assembly = Assembly.LoadFrom($"{assemblyName}.dll"); assembly = Assembly.Load($"{assemblyName}"); } catch { throw new Exception($"加载{className}访问模块失败.请检查是否已添加{assemblyName}引用."); } IDbCreator dbCreator = assembly.CreateInstance($"{assemblyName}.{className}") as IDbCreator; ExHelper.ThrowIfNull(dbCreator, $"加载{className}失败."); postgreSqlCreator = dbCreator; } this.dbCreator = postgreSqlCreator; }
private static void CreateDatabaseIfNotExists(IConfigurationRoot configuration, IDbCreator dbCreator, string providerName, ILogger logger) { var databaseScriptList = configuration["DWKit:DatabaseScriptList"]; if (string.IsNullOrWhiteSpace(databaseScriptList)) { databaseScriptList = Path.Combine("..", "DB", providerName, "create_db.txt"); } if (!File.Exists(databaseScriptList)) { logger?.LogWarning($"Script list file for database creation doesn't exist. Expected file path: {databaseScriptList}"); } else { dbCreator.CreateDatabaseIfNotExists(databaseScriptList, logger); } }