public void ImportAll(out IReadOnlyCollection <ImportedMigration> migrations, out IReadOnlyCollection <ImportedAggregateMigration> aggregateMigrations) { Log.Info("Importing migrations..."); DateTime start = DateTime.Now; var container = new CompositionContainer(_catalog); IEnumerable <Lazy <IMigration, IMigrationExportMetadata> > migrationExports = container.GetExports <IMigration, IMigrationExportMetadata>(); IEnumerable <Lazy <IMigration, IAggregateMigrationExportMetadata> > aggregateMigrationExports = container.GetExports <IMigration, IAggregateMigrationExportMetadata>(AggregateMigrationExportAttribute.ContractName); migrations = migrationExports .Select(l => { var timestamp = ExtractTimestamp(l.Metadata.ModuleName, l.Value); var migrationMetadata = new MigrationMetadata(timestamp, l.Metadata.ModuleName, l.Metadata.Tag); return(new ImportedMigration(l.Value, migrationMetadata, l.Metadata.UseModuleNameAsDefaultSchema)); }).ToList(); aggregateMigrations = aggregateMigrationExports .Select(l => { var timestamp = ExtractTimestamp(l.Metadata.ModuleName, l.Value); var aggregateMigrationMetadata = new AggregateMigrationMetadata(timestamp, l.Metadata.ModuleName); return(new ImportedAggregateMigration(l.Value, aggregateMigrationMetadata)); }).ToList(); Log.Verbose(LogCategory.Performance, "Importing migrations took {0}s", (DateTime.Now - start).TotalSeconds); Log.Info("Found {0} migration(s) and {1} aggregate migration(s)", migrations.Count, aggregateMigrations.Count); }
public void ImportAll(out IReadOnlyCollection <ImportedMigration> migrations, out IReadOnlyCollection <ImportedAggregateMigration> aggregateMigrations) { Log.Info("Importing migrations..."); DateTime start = DateTime.Now; using (CompositionHost container = _containerConfiguration.CreateContainer()) { var migrationExportFactories = container.GetExports <ExportFactory <IMigration, MigrationExportMetadata> >(); var aggregateMigrationExportFactories = container.GetExports <ExportFactory <IMigration, AggregateMigrationExportMetadata> >(AggregateMigrationExportAttribute.ContractName); migrations = migrationExportFactories .Select(f => new { f.Metadata, f.CreateExport().Value }) .Select(l => { var timestamp = ExtractTimestamp(l.Metadata.ModuleName, l.Value); var migrationMetadata = new MigrationMetadata(timestamp, l.Metadata.ModuleName, l.Metadata.Tag); return(new ImportedMigration(l.Value, migrationMetadata, l.Metadata.UseModuleNameAsDefaultSchema)); }).ToList(); aggregateMigrations = aggregateMigrationExportFactories .Select(f => new { f.Metadata, f.CreateExport().Value }) .Select(l => { var timestamp = ExtractTimestamp(l.Metadata.ModuleName, l.Value); var aggregateMigrationMetadata = new AggregateMigrationMetadata(timestamp, l.Metadata.ModuleName); return(new ImportedAggregateMigration(l.Value, aggregateMigrationMetadata)); }).ToList(); } Log.Verbose(LogCategory.Performance, "Importing migrations took {0}s", (DateTime.Now - start).TotalSeconds); Log.Info("Found {0} migration(s) and {1} aggregate migration(s)", migrations.Count, aggregateMigrations.Count); }