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 ваши миграции и вы можете продолжить с нормальными миграциями.
Ответ 3
Как насчет
Update-Database –TargetMigration: $InitialDatabase
в консоли диспетчера пакетов? Он должен 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>
// ...
// }
...
}
Если вы пропустите этот бит, все провалится, и вам нужно будет начать снова!
- Теперь запустите
Update-Database -verbose
Это должно быть успешным, если вы сделали это правильно, и теперь вы можете продолжить как обычно.
Ответ 5
Моя проблема оказалась в том, что я вручную удалил папку Migrations. Я сделал это, потому что я хотел создать резервную копию содержимого, поэтому я просто вытащил папку из проекта. Я позже исправил проблему, вернув ее обратно (после создания резервной копии), затем удалив папку Migrations, щелкнув ее правой кнопкой мыши в проводнике решений и выбрав "Удалить" во всплывающем меню.
Ответ 6
В EntityFramework 6 попробуйте:
Add-Migration Initial
чтобы обновить исходный файл миграции.
Ответ 7
В EF6
- Удалите все ваши файлы в папке "миграции"... Но не "начальное создание" или "конфиг".
- Удалить базу данных.
- Теперь запустите
Add-Migration Initial
.
- Теперь вы можете обновить базу данных, и все будет хорошо.
Ответ 8
Enable-Migrations -EnableAutomaticMigrations -Force