Как мне отменить последнюю команду Add-Migration?


84

Я создал миграцию с помощью Add-Migrationкоманды, но я хотел бы изменить имя этой миграции. Как мне отменить команду миграции, чтобы я мог восстановить ее с новым желаемым именем?

Это просто вопрос удаления сгенерированных файлов, или это может быть плохой идеей?

Ответы:


137

Если вы еще не использовали, Update-Databaseвы можете просто удалить файл миграции. Если вы запустили обновление, вам следует откатить его с помощью, а Update-Database -TargetMigration "NameOfPreviousMigration"затем удалить файл миграции.

Справка:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/


что, если это была добавлена ​​первая миграция?
Jimmyt1988,

@ Jimmyt1988, используйте Update-Database –TargetMigration: $ InitialDatabase
Серафим,

Потом удалить? Я не понимаю. Что потом удалить?
tnk479

@ tnk479 файл миграции. Отредактировано для
Колин

Печально видеть, что в более старой версии EF (например, EF 6) нет команд drop-databaseи remove-migrationкоманд
Хамза Ханзада

15

Если вы еще не выполнили миграцию с Update-Database, вы можете Add-Migrationснова запустить его с тем же именем (возможно, вам понадобится использовать -Force), чтобы повторно выполнить каркас. Это отмечается в выводе Add-Migrationкоманды.


Это не
лучшее

@Trojaner, вы правы, поэтому ответ stackoverflow.com/a/46921867/690958 - лучшее решение
Альберто Леон,

Может также очистить файлы? Для меня он оставляет файл миграции, но с пустыми методами Up () и Down ().
Дмитрий Карпенко

13

Просто используйте команду

Remove-migration

Он удалит последнюю добавленную миграцию и обновит снимок. Это не повлияет на базу данных, поэтому вам нужно сначала выполнить откат db.


5
Только в EF Core.
Джон

Я бы хотел, чтобы это было в EF 6 вместе с drop-databaseкомандами .. Я слишком привык к этому
Хамза Ханзада

4

В EntityFrameworkCore 2.0 входит моментальный снимок модели. Вам нужно будет запустить команду удаления миграции, чтобы обновить моментальный снимок модели. Я читал, что EF Core распознает любое обновление и вернет вам моментальный снимок, если вы вручную удалите миграцию, но у меня это не сработало.

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#dotnet-ef-migrations-remove


3

Чтобы добавить к ответу @Ben, при использовании dotnet efразнообразия команд вам нужна команда удаления:

dotnet ef migrations remove

Это удалит вашу последнюю миграцию и обновит снимок модели.



0

Просто используйте команду:

Update-Database nameMigration -context nameContext

А потом

Remove-migration -Context nameContext
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.