Как мне отменить последнюю команду 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

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

приятный
источник
2

Обновите последнюю идеальную миграцию с помощью этой команды:

Update-Database –TargetMigration
Абдус Салам Азад
источник
0

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

Update-Database nameMigration -context nameContext

А потом

Remove-migration -Context nameContext
Уго Борхес
источник