Как инициализировать первую миграцию EF Code на удаленной цели
-
11-12-2019 - |
Вопрос
Я хотел бы внедрить Code First Migrations в свой проект, но не знаю, как справиться с его развертыванием на моем клиенте для тестирования.До сих пор все было довольно просто, и я просто использовал CreateDatabaseIfNotExists
инициализатор.Теперь у меня есть два сценария:
Он удаляет свою существующую базу данных до миграции и использует инициализатор для создания новой базы данных с миграцией, и с этого момента мы используем миграции для обновления его базы данных.Могу ли я использовать
MigrateDatabaseToLatestVersion
инициализатор для создания БД, если он также отсутствует?Я просто развертываю свой код и позволяю ему выполнять миграцию.Я не совсем уверен, что что-то, кроме использования
MigrateDatabaseToLatestVersion
здесь требуется.Поможет ли это обновить базу данных перед миграцией до такой, которая подходит для миграции?
Решение
Это то, что я делаю, когда требуется автоматическая миграция;Надеюсь, это поможет вам найти решение:
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<ContextFileName, PathToMigrationsConfig>()
);
Database.Initialize(false);
В файле конфигурации для миграций я установил в конструкторе следующее:
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
В файле конфигурации у вас должно быть переопределение метода семени, если нет, вы можете добавить его и заполнить свои начальные данные.
Вышеупомянутое позволит создать/обновить базу данных до последней версии, если не произойдет потеря данных.Это должно позволить вам передать код клиенту.
Кстати, для производственной системы я обычно выступаю за то, чтобы этого не делать.Это имело много недостатков.Что касается баз данных, над которыми я не имею контроля, мне еще предстоит найти клиента, который отказался бы от сгенерированного файла сценария.
Вы можете получить это, используя следующую команду после добавления миграции через консоль диспетчера пакетов:
Update-database –script -verbose