После изменения ветвей в исходном элементе управления, использующего Update-Database для возврата к предыдущей миграции, EF иногда отображает текст "Возвращение автоматической миграции", как показано ниже:
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.
Reverting code-based migration: 201305162023299_Init.
Как Entity Framework определила, что миграция должна быть автоматической и что она делает по-другому?
Здесь, как воспроизвести его, предполагая, что у вас уже есть проект с первыми миграциями кода:
- Переключение на новую ветку в исходном управлении
- Внесите изменения в модель, mappers и добавьте миграцию
- Update-Database
- Возврат к ветке по умолчанию
- Update-Database -TargetMigration: 0 -Force
- См. "Возврат автоматической миграции" в результатах команды "Обновить базу данных"
Это то, что я ДУМАЮ, происходит, пожалуйста, поправьте меня, если я ошибаюсь.
- Update-Database перечисляет миграции в __MigrationHistory
- Он находит соответствующие файлы миграции в проекте и вызывает метод Down()
- Если соответствующий файл миграции не существует, то он лучше всего угадывает, как отменить миграцию на основе моментального снимка в __MigrationHistory