public void GivenTheCurrentMigrations_WhenApplyingAndRevertingAndApplyingThemAgain_DatabaseIsCorrectlyMigrated() { // Arrange DbContextOptions <TodoDbContext> dbContextOptions = GetDbContextOptions(); using TodoDbContext todoDbContext = new TodoDbContext(dbContextOptions); bool isMigrationSuccessful; try { todoDbContext.Database.EnsureDeleted(); IMigrator databaseMigrator = todoDbContext.GetInfrastructure().GetRequiredService <IMigrator>(); // Act databaseMigrator.Migrate(); // Revert migrations by using a special migration identifier. // See more here: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#dotnet-ef-database-update. databaseMigrator.Migrate(BeforeFirstDatabaseMigration); databaseMigrator.Migrate(); isMigrationSuccessful = true; } catch { isMigrationSuccessful = false; } // Assert isMigrationSuccessful.Should().BeTrue("migrations should work in both directions, up and down"); }
public void Migrate(string destination) { var watch = Stopwatch.StartNew(); _migrator.Migrate(destination); watch.Stop(); Console.WriteLine($"INFO: Migration DONE. [{watch.ElapsedMilliseconds}ms]"); }
static void Main(string[] args) { IConfigurationRoot configuration = LoadConfiguration(); IServiceProvider provider = ServiceConfiguration.CreateServiceProvider(configuration); IMigrator migrator = provider.GetService <IMigrator>(); migrator.Migrate(); Console.ReadKey(); }
/// <summary> /// Seeds all points of the migrator /// </summary> /// <param name="migrator">The migrator</param> private void Seed(IMigrator migrator) { foreach (var resource in migrator.GetMigratableResources()) { Console.WriteLine($@"MockResourceSeeder: migrating {resource.Code}"); foreach (var log in migrator.Migrate(resource, migrator.LatestPoint)) { Console.WriteLine(log); } } }
public static void Migrate(this DbContext v, string migration = "") { if (string.IsNullOrEmpty(migration)) { v.Database.Migrate(); } else { IMigrator migrator = v.GetInfrastructure().GetService <IMigrator>(); migrator.Migrate(migration); } }
public static void MigrateDatabase <T>(this IWebHost host, string migration = "") where T : DbContext { using IServiceScope scope = host.Services.CreateScope(); T db = scope.ServiceProvider.GetRequiredService <T>(); if (string.IsNullOrEmpty(migration)) { db.Database.Migrate(); } else { IMigrator migrator = db.GetInfrastructure().GetService <IMigrator>(); migrator.Migrate(migration); } }
protected override void ExecuteCore(string[] arguments) { var migrateCommandOptions = new MigrateCommandOptions(); if (Parser.Default.ParseArguments(arguments, migrateCommandOptions)) { Output.Info("soothsayer {0}-beta".FormatWith(Assembly.GetExecutingAssembly().GetName().Version)); Output.EmptyLine(); Prompt.NoPrompts = migrateCommandOptions.NoPrompt; if (migrateCommandOptions.NoPrompt) { Output.Info("Running in noprompt mode, soothsayer will run migrations without prompting for any confirmations."); } if (migrateCommandOptions.Concise) { Output.Info("Running in concise mode"); Output.Concise = true; } Output.Text("Migration scripts should be located in '{0}'.".FormatWith(migrateCommandOptions.InputFolder)); Output.Info("The target environment is: {0}".FormatWith(migrateCommandOptions.Environment.Join())); Output.Text("Scripts will be run against the following schema '{0}' using username '{1}'.".FormatWith(migrateCommandOptions.Schema, migrateCommandOptions.Username)); Output.Text(migrateCommandOptions.Version.HasValue ? "Target database version specified, will aim to bring the database up to version {0}.".FormatWith(migrateCommandOptions.Version.Value) : "No target database version specified, will aim to bring the database up to the latest version."); string password = GetOraclePassword(migrateCommandOptions); var databaseConnectionInfo = new DatabaseConnectionInfo(migrateCommandOptions.ConnectionString, migrateCommandOptions.Username, password); var migrationInfo = new MigrationInfo(migrateCommandOptions.Down ? MigrationDirection.Down : MigrationDirection.Up, migrateCommandOptions.InputFolder, migrateCommandOptions.Schema, migrateCommandOptions.Tablespace, migrateCommandOptions.Environment, migrateCommandOptions.Version, migrateCommandOptions.UseStored, migrateCommandOptions.Force); _migrator.Migrate(databaseConnectionInfo, migrationInfo); Output.EmptyLine(); Prompt.ForAnyKey("Database migration completed. Press any key to exit."); } }
private static void RunMigrations(string databaseName, TodoDbContext todoDbContext, ILogger logger) { logger.LogInformation("About to delete test database {TestDatabaseName} ...", databaseName); bool hasDeleteDatabase = todoDbContext.Database.EnsureDeleted(); logger.LogInformation( hasDeleteDatabase ? "Test database {TestDatabaseName} has been successfully deleted" : "Could not find any test database {TestDatabaseName} to delete", databaseName); logger.LogInformation("About to run migrations against test database {TestDatabaseName} ...", databaseName); IMigrator databaseMigrator = todoDbContext.GetInfrastructure().GetRequiredService <IMigrator>(); databaseMigrator.Migrate(); logger.LogInformation("Migrations have been successfully run against test database {TestDatabaseName}", databaseName); }
private void DoImport(TCObject objectToExecuteOn) { foreach (XModule wseModule in objectToExecuteOn.GetWseModules()) { try { IMigrator migrator = MigratorFactory.GetMigrator(wseModule); migrator.Migrate(objectToExecuteOn); } catch (Exception e) { FileLogger.Instance.Error( $"Migration of WSE Module 'migration for WSE Module :'{wseModule.DisplayedName}' failed due an error. This might leave the module in a inconsistent state.", e); } } CommonUtilities.ReplaceResourceWithLastResponseResource(objectToExecuteOn); }
public GenericFileDictionary(string fileName, IMigrator <T> migrator = null) : base(fileName) { string dbType = typeof(T).ToString(); bool typeMismatch = !dbType.Equals(base.TypeInfo); if (typeMismatch && migrator == null) { throw new Exception("Wrong DB type and no migrator specified."); } else if (typeMismatch) { List <string> keys = base.Keys; foreach (string key in keys) { string objectString = base[key] as string; Add(key, migrator.Migrate(objectString)); } base.TypeInfo = typeof(T).ToString(); } }
private static void RunMigrations(string databaseName, TodoDbContext todoDbContext, ILogger logger) { logger.LogInformation("About to delete test database {TestDatabaseName} ...", databaseName); bool hasDeleteDatabase = todoDbContext.Database.EnsureDeleted(); // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (hasDeleteDatabase) { logger.LogInformation("Test database {TestDatabaseName} has been successfully deleted", databaseName); } else { logger.LogInformation("Could not find any test database {TestDatabaseName} to delete", databaseName); } logger.LogInformation("About to run migrations against test database {TestDatabaseName} ...", databaseName); IMigrator databaseMigrator = todoDbContext.GetInfrastructure().GetRequiredService <IMigrator>(); databaseMigrator.Migrate(); logger.LogInformation("Migrations have been successfully run against test database {TestDatabaseName}", databaseName); }
public void Show() { Console.WriteLine($"Exporting Table [{Table}]..."); _migrator.Migrate(Destination); Console.WriteLine($"Exporting DONE."); }
private void MigrateDb(DbContext db) { IMigrator migrator = db.Database.GetService <IMigrator>(); migrator.Migrate(); }