При запуске PM> Remove-Migration -context BloggingContext
в VS2015 с проектом ASP.NET Core с использованием EF Core я получаю следующую ошибку:
System.InvalidOperationException: The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration. at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force)
at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.RemoveMigration(String contextType, Boolean force)
at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsRemoveCommand.<>c__DisplayClass0_0.<Configure>b__0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
Как я могу отменить это? Я использую последнюю версию ASP.NET Core 1.0, EF Core и VS2015 Update 3.
-force
в концеОтветы:
Использование:
CLI
> dotnet ef database update <previous-migration-name>
Консоль диспетчера пакетов
PM> Update-Database <previous-migration-name>
Пример:
PM> Update-Database MyInitialMigration
Затем попробуйте удалить последнюю миграцию.
Удаление миграции без обновления базы данных не работает, потому что вы применили изменения к базе данных.
Если вы используете PMC, попробуйте: PM> update-database 0 Это уничтожит базу данных и позволит вам удалить моментальный снимок миграции в вашем решении.
источник
dotnet ef database update MyFirstMigration --context BloggingContext
что сработало успешно. Тогда я побежал ,dotnet ef migrations remove --context BloggingContext
что дал мне такое же сообщение об ошибке , как в моем постеMyFirstMigration
. Если этоdotnet ef database update 0
первая миграция (как следует из названия), вы можете использовать ее для отмены (отмены) всех миграций из базы данных. Вы должны быть в состоянии бежатьdotnet ef migrations remove
.dotnet ef migrations remove
после этогоЧтобы полностью удалить все миграции и начать все сначала, сделайте следующее:
источник
dotnet ef database update 0
, ноdotnet ef migrations remove
последующий запуск удалит миграцию по умолчанию для Identity, что может быть нежелательно.dotnet ef database update 0
! Я не видел нигде упомянутого ...The migration '20180618103514_InitialMigration' has already been applied to the database. Revert it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
Вы все еще можете использовать
Update-Database
команду.Однако, судя по названию вашей миграции, я предполагаю, что это первая миграция, поэтому команда может не работать. Вы должны иметь возможность удалить запись из
__MigrationHistory
таблицы в вашей базе данных, а затемRemove-Migration
снова запустить команду. Вы также можете удалить файл миграции и просто начать заново.источник
Update-Database
из консоли управления пакетами или позвонитьdotnet ef database update
из командной строки из каталога проекта.<migration name>
должно быть название миграции, к которой вы хотите вернуться (то есть, вероятно, миграция до того, что вы испортили), а не имя миграции, которую вы хотите отменить.Чтобы отменить определенную миграцию (и) :
Чтобы отменить все миграции :
Чтобы удалить последнюю миграцию:
Чтобы удалить все миграции:
просто удалите
Migrations
папку.Чтобы удалить последние несколько миграций (не все):
Нет команды для удаления группы миграций, и мы не можем просто удалить эти несколько
migrations
и их*.designer.cs
файлы, так как нам нужно сохранить файл моментального снимка в согласованном состоянии. Нам нужно удалить миграцию одну за другой (см.To remove last migration
Выше).Чтобы отменить и удалить последнюю миграцию:
источник
unapply
всех этих постах. Меня просто поразило, что это не технический термин, это словоun - apply
Чтобы отменить последнюю примененную миграцию, вы должны (команды консоли диспетчера пакетов):
PM> Update-Database <prior-migration-name>
PM> Remove-Migration
UPD : Второй шаг, кажется, не требуется в последних версиях Visual Studio (2017).
источник
Remove-Migration
без проблем. Я не уверен в том, что вы сказали "это будет снова применено на следующем шаге"!dbContext.Database.Migrate()
в свой startup.csПросто вы можете настроить миграцию по значению
Тогда иди и удали его
источник
Чтобы «отменить» самую (последнюю?) Миграцию после того, как она уже была применена к базе данных:
Надеюсь, это поможет и применимо к любой миграции в проекте ... Я проверил это только для самой последней миграции ...
Удачного кодирования!
источник
В консоли диспетчера пакетов:
Update-Database Your_Migration_You_Want_To_Revert_To
Больше вариантов и объяснений того, как отменить миграцию, можно посмотреть здесь
источник
Вы должны удалить запись миграции «20160703192724_MyFirstMigration» из таблицы «_EFMigrationsHistory» .
в противном случае эта команда удалит миграцию и удалит папку миграции:
источник
В целом, если вы используете консоль диспетчера пакетов, правильным способом удаления определенной миграции является обращение к имени миграции.
Другой способ удалить последнюю миграцию, которую вы применили в соответствии с документами, - использовать команду:
Эта команда должна быть выполнена из командной строки разработчика ( как открыть командную строку ) внутри вашего каталога решений.
Например, если ваше приложение находится внутри имени «Приложение» и находится в папке c: \ Projects. Тогда ваш путь должен быть:
источник
Чтобы отменить миграцию в EF Core 1.0, используйте команду:
dotnet ef обновление базы данных {имя_ миграции}
Используйте имя миграции, до которого вы хотите сохранить изменения. Список имен миграции можно найти с помощью:
список миграций dotnet ef
источник
Чтобы отменить все миграции, которые применяются к БД, просто запустите:
Следует выполнить
Remove-Migration
столько раз, сколько файлов миграции видно в каталоге миграции. Команда удаляет последнюю миграцию, а также обновляет снимок.источник
сначала запустите следующую команду:
а затем запустите этот:
финиш
источник
источник
1. Найдите таблицу «dbo._EFMigrationsHistory», затем удалите запись миграции, которую вы хотите удалить. 2. запустить «удаление-миграцию» в PM (Консоль диспетчера пакетов). Работает для меня.
источник