Подтвердить что ты не робот

Как отключить перенос в ASP.NET Core с EF Core

Когда я запускаю 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.

4b9b3361

Ответ 1

Использование:

CLI

> dotnet ef database update <previous-migration-name>

Консоль диспетчера пакетов

PM> Update-Database <previous-migration-name>

Пример:

PM> Update-Database MyInitialMigration

Затем попробуйте удалить последнюю миграцию.

Удаление миграции без обновления базы данных не работает, поскольку вы применили изменения к базе данных.

Если вы используете PMC, попробуйте: PM> update-database 0 Это уничтожит базу данных и позволит вам удалить моментальный снимок миграции в вашем решении.

Ответ 2

Чтобы полностью удалить все миграции и начать все заново, сделайте следующее:

dotnet ef database update 0
dotnet ef migrations remove

Ответ 3

Вы все еще можете использовать команду Update-Database.

Update-Database -Migration <migration name> -Context <context name>

Однако, судя по имени вашей миграции, я предполагаю, что это первая миграция, так что команда может не работать. Вы должны удалить запись из таблицы __MigrationHistory в своей базе данных, а затем снова запустить команду Remove-Migration. Вы также можете удалить файл миграции и просто начать заново.

Ответ 4

Чтобы отменить последнюю примененную миграцию, вы должны (команды консоли диспетчера пакетов):

  1. Отменить миграцию из базы данных: PM> Update-Database <prior-migration-name>
  2. Удалить файл миграции из проекта (или он будет снова применен на следующем шаге)
  3. Обновить снимок модели: PM> Remove-Migration

UPD: Второй шаг, кажется, не требуется в последних версиях Visual Studio (2017).

Ответ 5

Просто вы можете настроить миграцию по значению

 Update-Database -Migration:0

Тогда иди и удали его

 Remove-Migration

Ответ 6

Чтобы отменить определенную миграцию (и):

dotnet ef database update <previous-migration-name>
or
PM> Update-Database -Migration <previous-migration-name>

Чтобы отменить все миграции:

dotnet ef database update 0
or
PM> Update-Database -Migration 0

Чтобы удалить последнюю миграцию:

dotnet ef migrations remove
or
PM> Remove-Migration

Чтобы отменить и удалить последнюю миграцию:

dotnet ef migrations remove --force
or
PM> Remove-Migration -Force

Ответ 7

Чтобы "не использовать" самую (недавнюю?) миграцию после того, как она уже была применена к базе данных:

  • Откройте "Обозреватель объектов SQL Server" ( "Просмотр → " "Обозреватель объектов SQL Server" )
  • Перейдите в базу данных, связанную с вашим проектом, развернув небольшие треугольники в сторону.
  • Разверните "Таблицы"
  • Найдите таблицу с именем "dbo._EFMigrationsHistory".
  • Щелкните правой кнопкой мыши на нем и выберите "Просмотреть данные", чтобы увидеть записи в Visual Studio.
  • Удалите строку, соответствующую вашей миграции, которую вы хотите удалить (скажите "да" предупреждению, если будет предложено).
  • Запустите "dotnet ef migrations remove" снова в окне команд в каталоге с файлом project.json. Кроме того, запустите команду "Удалить-миграция" в консоли диспетчера пакетов.

Надеюсь, что это поможет и применимо к любой миграции в проекте... Я проверил это только на самую последнюю миграцию...

Счастливое кодирование!

Ответ 9

В целом, если вы используете консоль диспетчера пакетов, правильным способом удаления определенной миграции является обращение к имени миграции.

Update-Database -Migration {Name of Migration} -Context {context}

Другой способ удалить последнюю перенесенную миграцию в соответствии с документами - использовать команду:

dotnet ef migrations remove

Эта команда должна быть выполнена из командной строки разработчика (как открыть командную строку) внутри вашего каталога решений.

Например, если ваше приложение находится внутри имени "Приложение" и находится в папке c:\Projects. Тогда ваш путь должен быть:

C:\Projects\Application

Ответ 10

Вы должны удалить запись миграции '20160703192724_MyFirstMigration' из таблицы _EFMigrationsHistory.

В противном случае эта команда удалит папку "Миграция" и "Удалить миграции":

   > remove-migration -force

Ответ 11

Чтобы отключить перенос в EF Core 1.0, используйте команду:

Обновление базы данных dotnet ef {имя_потока}

Используйте имя миграции миграции, до которого вы хотите сохранить свои изменения. Список имен миграции можно найти, используя:

dotnet ef список переходов

Ответ 12

var context = serviceProvider.GetRequiredService<ApplicationDbContext>();
var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var roleManaget = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();

await context.Database.EnsureDeletedAsync();

Ответ 13

1. Найдите таблицу "dbo._EFMigrationsHistory", затем удалите запись миграции, которую вы хотите удалить. 2. запустить "удаление-миграцию" в PM (Консоль диспетчера пакетов). Работает для меня.

Ответ 14

сначала запустите следующую команду:

PM>update-database -migration:0

а затем запустите этот:

PM>remove_migration

Finish