private IMigrationBatch FetchMigrationsTo(ComposablePartCatalog catalog, long timestamp) { // import all migrations DateTime start = DateTime.Now; var timestampProviders = InitializeTimestampProviders(catalog, _options.ModuleSelector); IEnumerable <ImportedMigration> availableMigrations = ImportAllMigrations(catalog, timestampProviders); Log.Verbose(LogCategory.Performance, "Importing migrations took {0}s", (DateTime.Now - start).TotalSeconds); // initialize command execution/scripting dispatching ISqlDispatcher dispatcher = new SqlDispatcher(_options.ScriptingOptions, _provider, _providerMetadata); // initialize versioning component and get executed migrations IVersioning versioning = InitializeVersioning(catalog, dispatcher); var executedMigrations = new List <IMigrationMetadata>(versioning.ExecutedMigrations); // create migration batch var migrationSelector = new MigrationSelector(availableMigrations, executedMigrations); IEnumerable <ApplicableMigration> applicableMigrations; IEnumerable <IMigrationMetadata> unidentifiedMigrations; migrationSelector.GetMigrationsTo(timestamp, _options.ModuleSelector, out applicableMigrations, out unidentifiedMigrations); return(new MigrationBatch( // ReSharper disable RedundantEnumerableCastCall applicableMigrations.Select(m => new MigrationStep(m.Implementation, m.Metadata, _connectionInfo, _provider, _providerMetadata, _dbConnectionFactory, dispatcher)).Cast <IMigrationStep>(), // ReSharper restore RedundantEnumerableCastCall unidentifiedMigrations, versioning, _options)); }
private RuntimeConfiguration CreateRuntimeConfiguration(string connectionString, DbPlatform dbPlatform, DbAltererOptions options) { var providerLocator = new ProviderLocator(new ProviderFactory()); // CLEAN: use DI container var providerInfo = providerLocator.GetLatest(dbPlatform); var validatorFactory = new ValidatorFactory(providerInfo, options, providerLocator); var validator = validatorFactory.Create(); var connectionInfo = new ConnectionInfo(connectionString, providerInfo.Metadata.InvariantName, providerInfo.Metadata.SupportsTransactions, providerInfo.Metadata.EnableAnsiQuotesCommand); var sqlDispatcher = new SqlDispatcher(options.GetScriptingOptions(), providerInfo.Provider, providerInfo.Metadata); return new RuntimeConfiguration(providerInfo, connectionInfo, validator, sqlDispatcher); }
private RuntimeConfiguration CreateRuntimeConfiguration(string connectionString, DbPlatform dbPlatform, DbAltererOptions options) { var providerLocator = new ProviderLocator(new ProviderFactory()); // CLEAN: use DI container var providerInfo = providerLocator.GetLatest(dbPlatform); var validatorFactory = new ValidatorFactory(providerInfo, options, providerLocator); var validator = validatorFactory.Create(); var connectionInfo = new ConnectionInfo(connectionString, providerInfo.Metadata.InvariantName, providerInfo.Metadata.SupportsTransactions, providerInfo.Metadata.EnableAnsiQuotesCommand); var sqlDispatcher = new SqlDispatcher(options.GetScriptingOptions(), providerInfo.Provider, providerInfo.Metadata); return(new RuntimeConfiguration(providerInfo, connectionInfo, validator, sqlDispatcher)); }