Как добавить только новые таблицы в существующую базу данных с ядром EF - PullRequest
0 голосов
/ 13 марта 2019

Мы используем ядро ​​EF и имеем ситуацию, которую можно описать следующим образом:

Нам нужно иметь возможность создавать только новые таблицы, которые нужны приложению (то есть бот, созданный с использованием ядра aspnet), еслиони не существуют в базе данных.Также обратите внимание, что существуют определенные таблицы, которые существуют в той же базе данных, и приложение намеревается использовать их, однако, поскольку они создаются из внешнего процесса - бот не должен их создавать.

Мы знаем, что мы можем использовать уже существующие таблицы в базе данных, используя метод scaffolding в ef core, а также иметь готовый набор миграций для таблиц, которые необходимо создать, но мы не уверены, что это правильный способделайте это специально, когда вы подключаетесь к новому арендатору.

Предполагая, что даже если мы получим все, что работает с арендатором базы данных dev, как мы планируем подключить новых арендаторов или подготовить различные базы данных, которые также собираютсяУ вас есть несколько таблиц и убедитесь, что приложение создает только новые таблицы, а также может использовать существующие таблицы?

Мысли?

1 Ответ

0 голосов
/ 13 марта 2019

Это будет работать только в том случае, если ваши существующие таблицы полностью отделены от ваших таблиц с первым кодом.При использовании code-first будет создано все, за что отвечает контекст.Таким образом, даже если у вас есть только внешний ключ к одной из существующих сущностей таблицы, этот контекст попытается создать эту таблицу вместе со всем остальным.Короче говоря, любой объект, представляющий существующую таблицу, не может иметь никакого контакта с любым объектом первого кода.Точка.

Однако, ваш дизайн с самого начала имеет недостатки.Аренда должна обрабатываться с различными базами данных.Если есть какой-то набор таблиц, на который они все будут ссылаться, это может быть отдельное соединение с базой данных.Если есть какой-то набор таблиц, который у всех будет, но вам не нужен доступ к данным друг друга, тогда эти таблицы должны быть просто созданы в каждой базе данных клиентов.Ни один уважающий себя клиент не будет когда-либо использовать службу, которая использует аренду одной базы данных.Как сам корпоративный клиент, в ту минуту, когда я узнал, что вы это сделали, будет в ту же минуту, когда вам показали дверь.

...