public string[] Generate(string databaseName) { var newMigrations = GetMigrationHistory(databaseName); var ahead = _migrationHistory.Subtract(newMigrations); if (ahead.Any) { throw new InvalidOperationException( "The target database is ahead of the desired migration. You can force a rollback, which may destroy data."); } var difference = newMigrations.Subtract(_migrationHistory); var generator = new ForwardGenerator(databaseName, difference); while (generator.Any) { generator.AddMigration(generator.Head); } return(generator.Sql.ToArray()); }