Слияние миграций в сущности-каркас-ядро

asp.net-core c# entity-framework entity-framework-core

Вопрос

Можно ли объединить все файлы миграции в один?

Я создал начальную миграцию.

dotnet ef migrations add InitialMigration

Источник

Когда я изменяю модель, я создаю новое обновление миграции.

Но теперь у меня слишком много файлов обновлений миграции. Можно ли объединить все файлы миграции в один?

Разумеется, сбрасывать базу данных нельзя, я должен сохранить данные

Принятый ответ

EF 6.X имеет опцию IgnoreChanges . Это идеально подходит для вашего сценария. Но, к сожалению, эта функция недоступна в ядре EF.

Но есть обходной путь.

Шаг 1. Удалите все сценарии миграции в папке «Миграции».

Шаг 2: В консоли диспетчера пакетов: запустите

PM> Add-Migration InitialCreate

Шаг 3. Удалите код методов Up() и Down() . Прежде чем сделать это, сохраните эти методы в другом месте, так как они понадобятся нам снова на шаге 5.

Шаг 4: запустить:

 PM> Update-Database

Он вставит новую запись в таблицу __EFMigrationsHistory .

Шаг 5: После этого заполните вышеуказанные сценарии миграции (т.е. .._InitialCreate ) Up() и Down() из содержимого, хранящегося в безопасном месте из шага 3

Вот и все. Теперь у вас есть только 1 файл миграции :)

Примечание: ядро EF с консолью диспетчера пакетов (PM): консоль диспетчера пакетов


Популярные ответы

Один из способов сделать это - физически удалить все файлы миграции и добавить новый. Если ваши миграции находятся в папке «Миграции», вы можете просто удалить ее, иначе вам также нужно удалить файл «ModelSnapshot». Я думаю, что этот подход может решить вашу проблему.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow