Консолидация миграции EF в новую InitialCreate
Я использую EF-миграции в течение некоторого времени и имею более 100 файлов миграции в моем проекте. Я хотел бы объединить их в одну миграцию, прежде чем двигаться вперед - т.е. я хочу заменить существующую миграцию InitialCreate новой версией, которая учитывает все мои последующие изменения, поэтому я могу удалить все остальные файлы миграции.
Я делаю это очень легко, если мне не интересно потерять все данные в БД, но я.
Как я могу достичь этого, сохраняя все данные целыми, а также сохраняя возможность воссоздавать базу данных с нуля (без данных), просто запустив Update-Database (что, я считаю, невозможно, используя подход, описанный Джули Лерман)?
Ответы
Ответ 1
Если вы не заботитесь о сохранении этих переносов, то я сделал это, удалив все в вашей папке миграции, а затем нацелил новую базу данных в строке подключения (или передал новую). После этого вы можете просто запустить команду add-migration:
add-migration InitialCreate
И он должен создать миграцию для вас.
Ответ 2
Подумайте о том, чтобы прочитать эту хорошую статью от Рика Стралла:
https://weblog.west-wind.com/posts/2016/jan/13/resetting-entity-framework-migrations-to-a-clean-slate
В основном решение не является тривиальным и требует большего, чем просто перепрограммирование всех миграций в один
потому что у вас есть два сценария, которые должны соответствовать одному классу миграции:
- Создать новую базу данных = > класс миграции должен содержать каждое создание таблицы
- Моя база данных уже обновлена = > Мне нужен пустой класс миграции
Решение:
Идея этого процесса в основном такова: база данных и схема EF обновлены и точно так, как вы этого хотите, поэтому мы собираемся удалить существующие миграции и создать новую начальную миграцию.
Таким образом, шаги для этого:
- Удалить таблицу _MigrationHistory из базы данных
- Удалите отдельные файлы миграции в папке Migrations проекта
- Включить-миграции в консоли диспетчера пакетов
- Добавление-Первичная миграция в PMC
- Прокомментируйте код внутри метода Up в начальной миграции
- Обновление базы данных в PMC (не создает ничего, кроме создания миграции
Запись) Удалить комментарии в методе Initial. Теперь вы по существу
reset схемы до последней версии.
- После того как пропущенная миграция выполнена в нужной базе данных, раскомментируйте код перехода