Извините, но вам нужно переработать вашу модель.
Можно сделать что-то общее, если у вас есть одна таблица для каждого типа - вы можете перейти в конфигурацию и изменить таблицу базы данных.OpenIddict позволяет это.Вы можете перезаписать конструкторы DbContext и воспроизводить все, что хотите с объектной моделью, что включает в себя изменение имен таблиц.
То, что вы также можете сделать, - это базовый базовый класс, принимающий классы, с которыми вы работаете, в качестве параметров.У меня есть такие - взять (a) тип сущности db и (b) тип dto на стороне API, а затем использовать некоторые универсальные функции и Automapper для сопоставления между ними.
Но в тот момент, когда вам нужно захватить имя таблицыдинамически вы находитесь в мире боли.Стандартная архитектура EF предполагает, что тип объекта отображается на объект базы данных.Таким образом, идентификатор уникален в таблице - от этого зависит вся реляционная модель.Идентификатор 44 должен быть уникальным для конкретного объекта, а не для объекта и таблицы, из которой он был загружен в данный момент.
Вы также значительно упускаете из виду логику, то есть для удаления.Я не хочу вам этого говорить, но хотя вы можете реализовать защиту на других уровнях для чтения, каждый из моих методов записи / обновления написан от руки.Теперь может показаться, что «Авторизация» работает, но нет.Или - если ваше приложение является комплексом "Hello world".Я иногда запускаю страницы тестирования кода, разрешена ли операция в определенном бизнес-контексте, и это зависит от конкретной ИС, установил ли пользователь переключатель переопределения (который может или не может быть действительным в зависимости от того, кем он является), в обход определенных бизнес-правил.Всё это в любом случае специфично.
О, что вы тоже можете сделать ... потому что у вас, кажется, много таблиц: НЕ используйте один класс, генерируйте их.Леса не так сложны.Я почти не помню, когда я сгенерировал последние базовые классы базы данных EF - в настоящее время все они исходят из Entity Developer (инструмент от Devart), в то время как база данных обрабатывается сценариями изменений (сначала я работаю с базой данных - я на самом деле хочу использовать базу данных иэто означает отфильтрованные индексы, триггеры, некоторые sp и представления с конкретным SQL), поэтому миграции на самом деле не работают вообще.
Но теперь динамическое перезапись имени таблицы - при сохранении того же объекта в фоновом режиме -кусать тебя довольно быстро.Скорее всего, он работает только для чрезвычайно упрощенных вещей - вы знаете, пример «Привет, мир» - и разбивается на части, когда у вас действительно есть логика.