Reset Миграции Entity-Framework

Я отключил свои миграции, я использовал IgnoreChanges для начальной миграции, но теперь хочу удалить все мои миграции и начать с начальной миграции со всей логикой.

Когда я удаляю миграцию в папке и пытаюсь и Add-Migration, он не генерирует полный файл (он пуст - потому что я не внес никаких изменений со времени моей последней, но теперь удаленной миграции).

Есть ли команда Disable-Migrations, поэтому я могу перезапустить Enable-Migrations?

Ответ 1

Вам необходимо:

  • Удалить состояние: удалить папку миграции в вашем проекте; И
  • Удалить таблицу __MigrationHistory в вашей базе данных (может быть в системных таблицах); Тогда
  • Выполните следующую команду в консоли диспетчера пакетов:

    Enable-Migrations -EnableAutomaticMigrations -Force
    

    Использовать с или без -EnableAutomaticMigrations

  • И, наконец, вы можете запустить:

    Add-Migration Initial
    

Ответ 2

Проблема: вы отключили свои миграции, и вы хотели бы reset без удаления существующих таблиц.

Проблема: вы не можете переносить reset с существующими таблицами в базе данных, так как EF хочет создавать таблицы с нуля.

Что делать:

  • Удалить существующие миграции из таблицы Migrations_History.

  • Удалить существующие миграции из папки миграции.

  • Запустите add-migration Reset. Это создаст миграцию в вашей папке миграции, которая включает в себя создание таблиц (но она не будет запускаться, чтобы она не выходила из системы.)

  • Теперь вам нужно создать начальную строку в таблице MigrationHistory, чтобы в EF был снимок текущего состояния. EF сделает это, если вы примените миграцию. Однако вы не можете применить перенос, который вы только что сделали, поскольку таблицы уже существуют в вашей базе данных. Поэтому перейдите в раздел "Миграция" и закомментируйте весь код внутри метода "Вверх".

  • Теперь запустите базу данных обновлений. Он применит Migration (хотя фактически не изменяет базу данных) и создаст строку моментального снимка в MigrationHistory.

У вас теперь reset ваши миграции и вы можете продолжить с нормальными миграциями.

Ответ 4

Чтобы исправить это, вам необходимо:

  • Удалите все *.cs файлы в папке миграции.

  • Удалить таблицу _MigrationHistory в базе данных

  • Выполнить Enable-Migrations -EnableAutomaticMigrations -Force

  • Выполнить Add-Migration Reset

Затем в классе public partial class Reset : DbMigration необходимо прокомментировать все существующие и текущие таблицы:

public override void Up()
{
// CreateTable(
// "dbo.<EXISTING TABLE NAME IN DATABASE>
// ...
// }
...
}

Если вы пропустите этот бит, все провалится, и вам нужно будет начать снова!

  1. Теперь запустите Update-Database -verbose

Это должно быть успешным, если вы сделали это правильно, и теперь вы можете продолжить как обычно.

Ответ 5

Моя проблема оказалась в том, что я вручную удалил папку Migrations. Я сделал это, потому что я хотел создать резервную копию содержимого, поэтому я просто вытащил папку из проекта. Я позже исправил проблему, вернув ее обратно (после создания резервной копии), затем удалив папку Migrations, щелкнув ее правой кнопкой мыши в проводнике решений и выбрав "Удалить" во всплывающем меню.

Ответ 6

В EntityFramework 6 попробуйте:

Add-Migration Initial

чтобы обновить исходный файл миграции.

Ответ 7

В EF6

  • Удалите все ваши файлы в папке "миграции"... Но не "начальное создание" или "конфиг".
  • Удалить базу данных.
  • Теперь запустите Add-Migration Initial.
  • Теперь вы можете обновить базу данных, и все будет хорошо.

Ответ 8

Enable-Migrations -EnableAutomaticMigrations -Force