Exemple #1
0
        private async Task ExecuteMigrationIfNeeded(int?lastMigrationId)
        {
            int newLastMigrationId   = 0;
            int lastMigrationIdValue = lastMigrationId ?? 0;

            var definedMigrations = GetDefinedMigrationsOrdered();

            foreach (var migration in definedMigrations.Where(m => m.Key > lastMigrationIdValue))
            {
                var migrationInstance = Activator.CreateInstance(migration.Value) as IMigration;
                if (migrationInstance != null)
                {
                    await migrationInstance.ExecuteMigrationAsync().ConfigureAwait(false);

                    newLastMigrationId = migration.Key;
                }
            }

            if (newLastMigrationId > lastMigrationIdValue)
            {
                await _configurationDao.SaveOrUpdateIntAsync(ConfigurationKeys.LastMigrationId, newLastMigrationId).ConfigureAwait(false);
            }
        }