Подтвердить что ты не робот

Консолидация миграции EF в новую InitialCreate

Я использую EF-миграции в течение некоторого времени и имею более 100 файлов миграции в моем проекте. Я хотел бы объединить их в одну миграцию, прежде чем двигаться вперед - т.е. я хочу заменить существующую миграцию InitialCreate новой версией, которая учитывает все мои последующие изменения, поэтому я могу удалить все остальные файлы миграции.

Я делаю это очень легко, если мне не интересно потерять все данные в БД, но я.

Как я могу достичь этого, сохраняя все данные целыми, а также сохраняя возможность воссоздавать базу данных с нуля (без данных), просто запустив Update-Database (что, я считаю, невозможно, используя подход, описанный Джули Лерман)?

4b9b3361

Ответ 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 схемы до последней версии.
  • После того как пропущенная миграция выполнена в нужной базе данных, раскомментируйте код перехода