Я бы сделал это с одним контроллером и действием / представлением для каждой операции CRUD (1x4). Когда и если схема изменится на одну или несколько таблиц поиска, я бы с этим справился. В противном случае подумайте о том, какую работу нужно выполнить, если вы добавите столбец в каждую из таблиц: вам придется обновить 48x12 или любые другие файлы.
Особенности того, как вы это делаете, зависят от вашей модели, но это можно сделать, просто используя ADO.NET и возвращая DataTable или аналогичный, заполненный динамическим оператором SQL, где имя таблицы предоставляется представлением. Конечно, вы должны были бы защититься от внедрения SQL, если бы вы использовали конкатенацию строк.
Представление Создать также будет использовать имя таблицы, полученное из опубликованной формы, чтобы знать, какую таблицу обновлять с опубликованными данными.