示例#1
0
        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);
        }
示例#2
0
        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);
        }