public static void Initialize(DatabaseConfig config) { s_connectionString = $"SslMode=none;Server={config.Host};Port={config.Port};Database={config.Database};Uid={config.Username};Pwd={config.Password};Pooling=true;"; OrmConfiguration.DefaultDialect = SqlDialect.MySql; using (var con = Open()) { if (con.QueryFirstOrDefault($"SHOW DATABASES LIKE \"{config.Database}\"") == null) { throw new DatabaseNotFoundException(config.Database); } var databaseProvider = new MysqlDatabaseProvider(con) { TableName = "__version" }; var assemblyProvider = new AssemblyMigrationProvider(typeof(Base).Assembly, typeof(Base).Namespace); var migrator = new SimpleMigrator(assemblyProvider, databaseProvider); migrator.Load(); if (migrator.CurrentMigration.Version != migrator.LatestMigration.Version) { if (config.RunMigration) { migrator.MigrateToLatest(); } else { throw new DatabaseVersionMismatchException(migrator.CurrentMigration.Version, migrator.LatestMigration.Version); } } } }
public void Migrate(string[] args) { var options = Cli.Parse <MigrateOptions>(args); var connectionString = $"SslMode=none;Server={options.Host};Port={options.Port};Database={options.Database};Uid={options.User};Pwd={options.Password};"; using (var con = new MySqlConnection(connectionString)) { con.Open(); var databaseProvider = new MysqlDatabaseProvider(con) { TableName = "__version" }; AssemblyMigrationProvider assemblyProvider = null; switch (options.Schema.ToLower()) { case "auth": assemblyProvider = new AssemblyMigrationProvider(s_authType.Assembly, s_authType.Namespace); break; case "game": assemblyProvider = new AssemblyMigrationProvider(s_gameType.Assembly, s_gameType.Namespace); break; default: Error("Invalid schema"); break; } try { var migrator = new SimpleMigrator(assemblyProvider, databaseProvider, new ConsoleLogger()); migrator.Load(); if (options.CurrentVersion > 0) { migrator.Baseline(options.CurrentVersion); } if (options.Version == 0) { migrator.MigrateToLatest(); } else { migrator.MigrateTo(options.Version); } } catch (MigrationNotFoundException ex) { Error(ex.Message); } } }
public async Task <ISimpleMigrator> CreateAsync(MigrationOptions options) { var projectInfo = await _projectInfoDiscoverer.DiscoverAsync( !options.NoBuild, options.Configuration, options.Framework, options.Project, options.Assembly, options.ConnectionString, options.ConnectionStringName); using (var loader = new DependencyAwareAssemblyLoader(projectInfo.ProjectAssembly)) { var migrationProvider = new AssemblyMigrationProvider(projectInfo.ProjectAssembly); var connection = new SqlConnection(projectInfo.ConnectionString); var dbProvider = new MssqlDatabaseProvider(connection) { SchemaName = "dbo" }; var migrator = new SimpleMigrator(migrationProvider, dbProvider, _migrationLogger); migrator.Load(); return(migrator); } }