Это было в моей голове в течение долгого времени, и, к счастью, я пока не нуждался в этом ответе, однако я все еще хотел бы знать лучший подход. Допустим, у нас есть следующие настройки:
- Веб-API , построенный поверх Entity Framework (сначала код) в Microsoft Azure .
- Автоматическая миграция включена (автоматически мигрирует до последней версии)
- У нас есть два слота - Производство & Постановка (оба имеют отдельную базу данных)
Давайте следовать этому сценарию:
- Мы развертываем новую версию в промежуточный слот (убедитесь, что все работает)
- Промежуточная база данных автоматически переносится на последнюю версию
- Мы своп подготовка экземпляр к производство слот
- Миграции run в production database
- Мы понимаем - по какой-то причине - нам нужно понизить версию и перейти к предыдущей версии.
ОК, теперь пришли все мои вопросы:
- Как нам понизить версию базы данных до предыдущей версии - (поскольку я не думаю, что это хорошая идея - подключиться к VS для производства и запустить команду downgrade из консоли диспетчера пакетов).
- Является ли рабочий процесс следующим: понизить версию базы данных до текущего экземпляра (что приведет к короткому времени простоя веб-приложения, поскольку миграции не будут совпадать), а затем заменить промежуточный (старый) промежуточный слот на рабочий слот?
Я некоторое время ломал голову над этим, так как не могу найти идеального способа сделать это - поскольку структура сущностей ломается, когда миграции не совпадают.