public static void ExecutePendingResourceMigrations(string resPath, SmartObjectContext dbContext) { Guard.ArgumentNotNull(() => dbContext); string headPath = Path.Combine(resPath, "head.txt"); if (!File.Exists(headPath)) { return; } string resHead = File.ReadAllText(headPath).Trim(); if (!MigratorUtils.IsValidMigrationId(resHead)) { return; } var migrator = new DbMigrator(new MigrationsConfiguration()); var migrations = GetPendingResourceMigrations(migrator, resHead); foreach (var id in migrations) { if (IsAutomaticMigration(id)) { continue; } if (!IsValidMigrationId(id)) { continue; } // Resolve and instantiate the DbMigration instance from the assembly var migration = CreateMigrationInstanceByMigrationId(id, migrator.Configuration); var provider = migration as ILocaleResourcesProvider; if (provider == null) { continue; } var builder = new LocaleResourcesBuilder(); provider.MigrateLocaleResources(builder); var resEntries = builder.Build(); var resMigrator = new LocaleResourcesMigrator(dbContext); resMigrator.Migrate(resEntries); } }
public static void MigrateLocaleResources(this SmartObjectContext ctx, Action <LocaleResourcesBuilder> fn, bool updateTouchedResources = false) { Guard.ArgumentNotNull(() => ctx); Guard.ArgumentNotNull(() => fn); var builder = new LocaleResourcesBuilder(); fn(builder); var entries = builder.Build(); var migrator = new LocaleResourcesMigrator(ctx); migrator.Migrate(entries, updateTouchedResources); }