/// <summary> /// Create a new MySql Server database /// </summary> private static async Task CreateMySqlDatabaseAsync(string dbName, bool recreateDb = true) { var onRetry = new Func <Exception, int, TimeSpan, Task>((ex, cpt, ts) => { Console.WriteLine($"Creating MySql database failed when connecting to information_schema ({ex.Message}). Wating {ts.Milliseconds}. Try number {cpt}"); return(Task.CompletedTask); }); SyncPolicy policy = SyncPolicy.WaitAndRetry(3, TimeSpan.FromMilliseconds(500), null, onRetry); await policy.ExecuteAsync(async() => { using (var sysConnection = new MySqlConnection(Setup.GetMySqlDatabaseConnectionString("information_schema"))) { sysConnection.Open(); if (recreateDb) { using (var cmdDrop = new MySqlCommand($"Drop schema if exists {dbName};", sysConnection)) await cmdDrop.ExecuteNonQueryAsync(); } using (var cmdDb = new MySqlCommand($"create schema {dbName};", sysConnection)) cmdDb.ExecuteNonQuery(); sysConnection.Close(); } }); }
/// <summary> /// Create a new Sql Server database /// </summary> public static async Task CreateSqlServerDatabaseAsync(string dbName, bool recreateDb = true) { var onRetry = new Func <Exception, int, TimeSpan, Task>((ex, cpt, ts) => { Console.WriteLine($"Creating SQL Server database failed when connecting to master ({ex.Message}). Wating {ts.Milliseconds}. Try number {cpt}"); return(Task.CompletedTask); }); SyncPolicy policy = SyncPolicy.WaitAndRetry(3, TimeSpan.FromMilliseconds(500), null, onRetry); await policy.ExecuteAsync(async() => { using (var masterConnection = new SqlConnection(Setup.GetSqlDatabaseConnectionString("master"))) { masterConnection.Open(); using (var cmdDb = new SqlCommand(GetSqlCreationScript(dbName, recreateDb), masterConnection)) await cmdDb.ExecuteNonQueryAsync(); masterConnection.Close(); } }); }