Як скасувати останню команду Add-Migration?


83

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

Це просто питання видалення сформованих файлів, або це може бути поганою ідеєю?

Відповіді:


135

Якщо ви не використовували, Update-Databaseви можете просто видалити файл міграції. Якщо ви запустили оновлення, вам слід повернути його назад, Update-Database -TargetMigration "NameOfPreviousMigration"а потім видалити файл міграції.

Довідково:

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


а якби це була перша додана міграція?
Jimmyt1988

@ Jimmyt1988, використовуйте Update-Database –TargetMigration: $ InitialDatabase
Seraphim

Тоді видалити? Я не розумію. Тоді видалити що?
tnk479

@ tnk479 файл міграції. Відредаговано, щоб зробити це зрозумілішим
Колін,

Сумно бачити, що у старшій версії EF (як EF 6) немає drop-databaseі remove-migrationкоманд
Хамза Ханзада,

15

Якщо ви ще не виконали міграцію за допомогою Update-Database, ви можете запустити Add-Migrationзнову з тим самим іменем (можливо, вам доведеться скористатися -Force), щоб повторно виконати риштування. Це зазначається у результатах Add-Migrationкоманди.


Це не є гарним рішенням, оскільки це не відновить ApplicationDbContextModelSnapshot
Trojaner

@Trojaner ви маєте рацію, тому відповідь stackoverflow.com/a/46921867/690958 є кращим рішенням
Альберто Леон

Чи може це також очистити файли? Для мене він залишає файл міграції, але з порожніми методами Up () і Down ().
Дмитро Карпенко

11

Просто використовуйте команду

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.