public override IEnumerable <string> SqlCommands <TKey>(CommandProvider <TKey> commandProvider, IDbConnection connection) { TableInfo tableInfo = commandProvider.GetTableInfo(ModelType); var rebuildFKs = commandProvider.GetDependentForeignKeys(connection, tableInfo); DropTable drop = new DropTable(tableInfo, rebuildFKs); foreach (var cmd in drop.SqlCommands(commandProvider, connection)) { yield return(cmd); } CreateTable create = new CreateTable(ModelType); foreach (var cmd in create.SqlCommands(commandProvider, connection)) { yield return(cmd); } foreach (var fk in rebuildFKs) { yield return(commandProvider.AddForeignKeyCommand(fk)); } }