private void ExecuteMigrations(string connectionString)
        {
            if (_environment.IsDevelopment())
            {
                try
                {
                    var evolveConnection = new MySql.Data.MySqlClient.MySqlConnection(connectionString);

                    var evolve = new Evolve.Evolve("evolve.json", evolveConnection, msg => _logger.LogInformation(msg))
                    {
                        Locations = new List <string> {
                            "db/migrations"
                        },
                        //não apaga conteúdo, caso já existe alguma informação no BD
                        IsEraseDisabled = true,
                    };

                    evolve.Repair();
                    evolve.Migrate();
                }
                catch (Exception ex)
                {
                    _logger.LogCritical("Database migration faield.", ex);
                    throw;
                }
            }
        }
예제 #2
0
파일: Database.cs 프로젝트: xSke/Chronicler
        public async Task RunMigrations(bool repair)
        {
            await using var connection = await Obtain();

            var evolve = new Evolve.Evolve(connection, msg => _logger.Information("Evolve: {Message}", msg))
            {
                Locations                    = new[] { Path.Join(Path.GetDirectoryName(typeof(Database).Assembly.Location), "Schema") },
                IsEraseDisabled              = true,
                SqlMigrationPrefix           = "v",
                SqlRepeatableMigrationPrefix = "r",
                CommandTimeout               = 9999999 // some of these are really long!
            };

            if (repair)
            {
                evolve.Repair();
            }

            // Evolve isn't async >.>
            await Task.Run(() => evolve.Migrate());
        }