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