示例#1
0
        /// <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();
                }
            });
        }
示例#2
0
        /// <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();
                }
            });
        }