示例#1
0
 public MigrationHelper(IConfiguration configuration)
 {
     _configuration    = configuration;
     _tag              = _configuration.GetSection("Migration")["TagName"];
     _migrationContext = new BaseMigrationContext(configuration.GetConnectionString("TechtalkConn"),
                                                  configuration.GetSection("Provider")["ProviderName"]);
 }
示例#2
0
        /// <summary>
        /// Create Migration service
        /// </summary>
        /// <param name="context">Migration context</param>
        /// <returns>ServiceProvider</returns>
        private ServiceProvider CreateService(BaseMigrationContext context)
        {
            var service = new ServiceCollection()
                          .AddFluentMigratorCore()
                          .ConfigureRunner(r => r
                                           .GetDatabase(context)
                                           .WithGlobalConnectionString(context.ConnectionString)
                                           .WithMigrationsIn(typeof(BaseMigrationContext).Assembly)
                                           .WithVersionTable(new VersionTable(_configuration))
                                           )
                          //Configure to run only migrations that is marked with context tag
                          .Configure <RunnerOptions>(opt =>
            {
                opt.Tags = new[] { _tag };
            })
                          .BuildServiceProvider(true);

            return(service);
        }
        /// <summary>
        /// Get the correct database provider from the Migration Context
        /// </summary>
        /// <param name="runnerBuilder">IMigrationRunnerBuilder</param>
        /// <param name="context">BaseMigrationContext</param>
        /// <returns>IMigrationRunnerBuilder with correct database configured</returns>
        public static IMigrationRunnerBuilder GetDatabase(this IMigrationRunnerBuilder runnerBuilder,
                                                          BaseMigrationContext context)
        {
            switch (context.DatabaseProvider)
            {
            case "postgresql":
                return(runnerBuilder.AddPostgres());

            case "sqlserver":
                return(runnerBuilder.AddSqlServer());

            case "sqlite":
                return(runnerBuilder.AddSQLite());

            case "firebird":
                return(runnerBuilder.AddFirebird());

            default:
                throw new ArgumentException("Unable to define database provider");
            }
        }