private IMigrationBatch FetchMigrationsTo(ContainerConfiguration containerConfiguration, long timestamp) { IVersioning versioning = InitializeVersioning(containerConfiguration); IDictionary <string, IMigrationTimestampProvider> timestampProviders = InitializeTimestampProviders(containerConfiguration); var importer = new MigrationImporter(containerConfiguration, timestampProviders); var batchPreparer = new MigrationBatchPreparer(importer, versioning, Configuration); return(batchPreparer.Prepare(timestamp, _options)); }
private void ApplyCustomBootstrapping(Versioning versioning, ContainerConfiguration containerConfiguration) { var timestampProviders = InitializeTimestampProviders(containerConfiguration); using (IDbConnection connection = Configuration.OpenConnection()) { using (IDbTransaction transaction = Configuration.ConnectionInfo.SupportsTransactions ? connection.BeginTransaction() : null) { _customBootstrapper.BeginBootstrapping(connection, transaction); // bootstrapping is a "global" operation; therefore we need to call IsContained on *all* migrations var importer = new MigrationImporter(containerConfiguration, timestampProviders); var allMigrations = importer.ImportMigrations() .Select(m => m.Metadata); var migrationsContainedAtBootstrapping = allMigrations.Where(m => _customBootstrapper.IsContained(m)); versioning.UpdateToInclude(migrationsContainedAtBootstrapping, connection, transaction); _customBootstrapper.EndBootstrapping(connection, transaction); if (transaction != null) { transaction.Commit(); } } } }