Имя таблицы (содержит / регулярное выражение) при создании объекта - Entity Framework - Префикс таблицы - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь создать модель EF на основе существующей MySQL базы данных. После создания объекта я отображаю его, используя:

[Table("databaseName.tableName")] или:

modelBuilder.Entity<Lang>().ToTable("tableName") в OnModelCreating.

Проблема в том, что имена таблиц мог иметь неожиданный префикс . Я хочу, не зная префикса, найти любую таблицу в базе данных, которая:

(что-то вроде) EndsWith("tableName") использует ее, или:

имя которой соответствует Regex.

Это выполнимо? В качестве альтернативы можно было бы попросить пользователя указать TablePrefix c для его / ее базы данных и поработать с ним (modelBuilder.Entity<Lang>().ToTable(prefix + "tableName"), но это было бы довольно неудобно. Поскольку префикс - это единственное, что может изменяться от базы данных к другой, было бы действительно полезно иметь возможность обнаруживать таблицы по их имени.

1 Ответ

1 голос
/ 28 мая 2020

Вы не можете запрашивать базу данных в OnModelCreating, но вы можете использовать строку подключения для открытия ADO. NET Подключение к базе данных и выполнение запроса для получения имен таблиц и построения сопоставления между типами сущностей и имена таблиц.

...