Beispiel #1
0
        private void MigrateTo(int migration)
        {
            var migrations = _migration_provider.GetMigrations();
            int current    = _migration_provider.DatabaseMigrationNumber();

            if (migrations.Count < current)
            {
                current = migrations.Count;
            }
            if (migration > migrations.Max(m => m.Key) || migration < 0)
            {
                Console.WriteLine("Invalid Migration");
                return;
            }
            if (migration == current)
            {
                Console.WriteLine("Nothing to be done.");
                return;
            }

            while (current < migration)
            {
                // go Up
                KeyValuePair <string, string> migration_kvp = _migration_provider.GetMigrationWithContents(++current);
                string  migration_json   = migration_kvp.Value;
                dynamic migration_object = Helpers.DeserializeMigration(migration_json);
                Console.WriteLine("Executing " + current + ". Executing Migration " + migration_kvp.Key);
                _database_provider.ExecuteUpCommand(migration_object);
                _database_provider.UpdateMigrationVersion(current);
            }
            while (current > migration && current > 0)
            {
                // go down
                KeyValuePair <string, string> migration_kvp = _migration_provider.GetMigrationWithContents(current);
                string  migration_json   = migration_kvp.Value;
                dynamic migration_object = Helpers.DeserializeMigration(migration_json);
                Console.WriteLine("Removing " + (current) + ". Executing Migration " + migration_kvp.Key);
                _database_provider.ExecuteDownCommand(migration_object);
                _database_provider.UpdateMigrationVersion(--current);
            }
        }