Как инициализировать первую миграцию EF Code на удаленной цели

StackOverflow https://stackoverflow.com//questions/10653500

Вопрос

Я хотел бы внедрить Code First Migrations в свой проект, но не знаю, как справиться с его развертыванием на моем клиенте для тестирования.До сих пор все было довольно просто, и я просто использовал CreateDatabaseIfNotExists инициализатор.Теперь у меня есть два сценария:

  1. Он удаляет свою существующую базу данных до миграции и использует инициализатор для создания новой базы данных с миграцией, и с этого момента мы используем миграции для обновления его базы данных.Могу ли я использовать MigrateDatabaseToLatestVersion инициализатор для создания БД, если он также отсутствует?

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

Это было полезно?

Решение

Это то, что я делаю, когда требуется автоматическая миграция;Надеюсь, это поможет вам найти решение:

Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<ContextFileName, PathToMigrationsConfig>()
    );
Database.Initialize(false);

В файле конфигурации для миграций я установил в конструкторе следующее:

AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;

В файле конфигурации у вас должно быть переопределение метода семени, если нет, вы можете добавить его и заполнить свои начальные данные.

Вышеупомянутое позволит создать/обновить базу данных до последней версии, если не произойдет потеря данных.Это должно позволить вам передать код клиенту.


Кстати, для производственной системы я обычно выступаю за то, чтобы этого не делать.Это имело много недостатков.Что касается баз данных, над которыми я не имею контроля, мне еще предстоит найти клиента, который отказался бы от сгенерированного файла сценария.

Вы можете получить это, используя следующую команду после добавления миграции через консоль диспетчера пакетов:

Update-database –script -verbose
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top