public ConnectionlessVersionLoader( [NotNull] IProcessorAccessor processorAccessor, [NotNull] IMigrationRunnerConventions conventions, [NotNull] IOptions <RunnerOptions> runnerOptions, [NotNull] IMigrationInformationLoader migrationInformationLoader, [NotNull] IVersionTableMetaData versionTableMetaData) { _processor = processorAccessor.Processor; _migrationInformationLoader = migrationInformationLoader; Conventions = conventions; StartVersion = runnerOptions.Value.StartVersion; TargetVersion = runnerOptions.Value.Version; VersionInfo = new VersionInfo(); VersionTableMetaData = versionTableMetaData; VersionMigration = new VersionMigration(VersionTableMetaData); VersionSchemaMigration = new VersionSchemaMigration(VersionTableMetaData); VersionUniqueMigration = new VersionUniqueMigration(VersionTableMetaData); VersionDescriptionMigration = new VersionDescriptionMigration(VersionTableMetaData); LoadVersionInfo(); }
/// <summary> /// Initializes a new instance of the <see cref="MigrationRunner"/> class. /// </summary> /// <param name="options">The migration runner options</param> /// <param name="processorOptions">The migration processor options</param> /// <param name="profileLoader">The profile loader</param> /// <param name="processorAccessor">The migration processor accessor</param> /// <param name="maintenanceLoader">The maintenance loader</param> /// <param name="migrationLoader">The migration loader</param> /// <param name="logger">The logger</param> /// <param name="stopWatch">The stopwatch</param> /// <param name="migrationRunnerConventionsAccessor">The accessor for migration runner conventions</param> /// <param name="assemblySource">The assemblies to scan for migrations, etc...</param> /// <param name="migrationValidator">The validator for migrations</param> /// <param name="serviceProvider">The service provider</param> /// <param name="migrationScopeHandler">THe migration scope handler</param> public MigrationRunner( [NotNull] IOptions <RunnerOptions> options, [NotNull] IOptionsSnapshot <ProcessorOptions> processorOptions, [NotNull] IProfileLoader profileLoader, [NotNull] IProcessorAccessor processorAccessor, [NotNull] IMaintenanceLoader maintenanceLoader, [NotNull] IMigrationInformationLoader migrationLoader, [NotNull] ILogger <MigrationRunner> logger, [NotNull] IStopWatch stopWatch, [NotNull] IMigrationRunnerConventionsAccessor migrationRunnerConventionsAccessor, [NotNull] IAssemblySource assemblySource, [NotNull] MigrationValidator migrationValidator, [NotNull] IServiceProvider serviceProvider, [CanBeNull] IMigrationScopeManager migrationScopeHandler) { Processor = processorAccessor.Processor; Conventions = migrationRunnerConventionsAccessor.MigrationRunnerConventions; ProfileLoader = profileLoader; MaintenanceLoader = maintenanceLoader; MigrationLoader = migrationLoader; _serviceProvider = serviceProvider; _options = options.Value; _logger = logger; _stopWatch = stopWatch; _processorOptions = processorOptions.Value; _migrationScopeManager = migrationScopeHandler ?? new MigrationScopeHandler(Processor, processorOptions.Value); _migrationValidator = migrationValidator; _versionLoader = new Lazy <IVersionLoader>(serviceProvider.GetRequiredService <IVersionLoader>); #pragma warning disable 612 #pragma warning disable 618 _migrationAssemblies = new AssemblyCollectionService(assemblySource); #pragma warning restore 618 #pragma warning restore 612 }
private static void UpdateDatabase(IConfiguration configuration, IHostEnvironment environment) { IServiceProvider serviceProvider = CreateFluentMigrationServiceProvider(configuration, environment.EnvironmentName); using IServiceScope serviceScope = serviceProvider.CreateScope(); IMigrationRunner migrationRunner = serviceScope.ServiceProvider.GetService <IMigrationRunner>(); IMigrationInformationLoader migrationInformationLoader = migrationRunner.MigrationLoader; IMigrationContext migrationContext = serviceProvider.GetRequiredService <IMigrationContext>(); IMigrationGenerator migrationGenerator = serviceProvider.GetRequiredService <IMigrationGenerator>(); string sqlScriptsDirectory = Path.Combine(environment.ContentRootPath, "./Scripts/"); RefreshDirectory(sqlScriptsDirectory); migrationInformationLoader.CreateMigrationsSqlEquivalent(migrationContext, migrationGenerator, sqlScriptsDirectory); migrationRunner.ListMigrations(); if (environment.EnvironmentName.Equals("Testing")) { migrationRunner.MigrateDown(0); } migrationRunner.MigrateUp(); }