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));
            }
        }