6

У меня есть проект Entity Framework 6 CF, который уже имеет несколько миграций.Слияние записей миграции в Entity Framework

Модель в настоящее время стабильна и нет необходимости сохранять историю миграции, которая уже существует.

Есть ли способ сбросить модель и объединить все команды миграции в первоначальную миграцию?

В качестве примера, первая миграция добавляет столбец, а вторая миграция добавляет уникальный, некластеризованный индекс. Теперь я хочу видеть все эти изменения непосредственно в OnModelCreating, а не в отдельных переходах.

ответ

5

Миграции имеют как Up, так и Down. Вы всегда можете переделать свое приложение, разрывая миграцию вниз, а затем добавляя новую миграцию. Процесс Down не изменяет вашу модель, а только изменения в базе данных. Используйте Update-Database -Target:migrationTargetName или Update-Database -TargetMigration:migrationNumber.

Если вы хотите выполнить миграцию, которая начинается без базы данных и заканчивается вашей текущей моделью, вы можете разорвать все миграции с помощью Update-Database -TargetMigration:0. Это хорошая идея снести базу данных, а затем запустить Update-Database в качестве теста для проверки изменений базы данных.

Имейте в виду, если вы разорвать ваши миграции до 0, а затем запустить Add-Migration, вы будете хотеть очень внимательно посмотреть на сгенерированный эшафот, как это, вероятно, будет существенно отличаться от постепенных изменений.

+1

Поскольку я не знаком с терминологией, вот что я понимаю до сих пор. Перенос базы данных на миграцию «0» приведет к отмене всех 'Up', выполнению всех 'Down' и сбросу базы данных на 'InitialMigration'. Как «Обновить-База данных» будет синхронизироваться с текущей моделью базы данных, я не получаю. Будет ли он автоматически генерировать «Up» и «Down» таким образом, чтобы полученная модель стала тем, с чего я начал, прежде чем снести их? –

+0

, когда вы находитесь в режиме миграции «0», вы хотите запустить «Add-Migration», чтобы создать новую миграцию, которая начинается с текущего состояния ('0') и подмостей до текущей модели. при запуске 'Update-Database' запускаются все операторы' Up', что полезно для тестирования, когда у вас много миграций. – Claies

+0

Скорее всего, я не четко сформулировал свое намерение. В настоящее время мы имеем «x» количество миграций, а консолидированный хэш - «abc», например. Я хочу потерять все «Down's» и иметь либо только «Up», либо обновленную модель, чтобы хэш стал «abc». Все записи миграций над начальным «0» должны быть отброшены, как если бы мы впервые запустили «InitialMigration» в новой модели с hash 'xyz'. –

Смежные вопросы