Resetuj Migracje Entity-Framework

Udało mi się przerobić moje migracje, użyłem IgnoreChanges przy początkowej migracji, ale teraz chcę usunąć wszystkie moje migracje i zacząć od początkowej migracji z całą logiką.

Kiedy usuwam migracje z folderu i próbuję Add-Migration nie generuje pełnego pliku (jest pusty - ponieważ nie wprowadziłem żadnych zmian od ostatniej, ale teraz usuniętej, migracji).

Czy jest jakieś polecenieDisable-Migrations , żebym mógł ponownie uruchomić Enable-Migrations?

Author: shA.t, 2012-07-27

10 answers

Musisz:

  1. usuń stan: Usuń folder migracji w Twoim projekcie; oraz
  2. Usuń __MigrationHistory tabelę w bazie danych (może znajdować się w tabelach systemowych); następnie
  3. Uruchom następujące polecenie w konsoli Menedżera pakietów:

    Enable-Migrations -EnableAutomaticMigrations -Force
    

    Stosować z lub bez -EnableAutomaticMigrations

  4. I wreszcie możesz uruchomić:

    Add-Migration Initial
    
 407
Author: Todd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 23:04:30

Problem: migracje zostały zablokowane i chcesz je zresetować bez usuwania istniejących tabel.

Problem: nie można zresetować migracji z istniejącymi tabelami w bazie danych, ponieważ EF chce utworzyć tabele od zera.

Co robić:

  1. Usuń istniejące migracje z tabeli Migrations_History.

  2. Usuń istniejące migracje z folderu migracje.

  3. Uruchom add-migration Reset. To będzie Utwórz migrację w folderze migracja, który obejmuje tworzenie tabel (ale nie będzie go uruchamiać, więc nie będzie błędu.)

  4. Teraz musisz utworzyć początkowy wiersz w tabeli MigrationHistory, aby EF miał migawkę bieżącego stanu. EF zrobi to, jeśli zastosujesz migrację. Nie można jednak zastosować migracji, którą właśnie wykonałeś, ponieważ tabele już istnieją w Twojej bazie danych. Więc przejdź do migracji i skomentuj cały kod wewnątrz "Up" metoda.

  5. Teraz uruchom update-database. Zastosuje migrację (nie zmieniając bazy danych) i utworzy wiersz migawki w MigrationHistory.

Zostały zresetowane migracje i mogą być kontynuowane przy normalnych migracjach.

 132
Author: Greg0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-28 18:07:29

A może

Update-Database –TargetMigration: $InitialDatabase

W Konsoli Menedżera Pakietów? Powinien zresetować wszystkie aktualizacje do bardzo wczesnego stanu.

Reference link: Code First Migrations-migracja do określonej wersji (w tym Downgrade)

 26
Author: Chris Voon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-03 16:39:17

Aby to naprawić, musisz:

  1. Usuń wszystkie*.pliki cs w folderze migracje.

  2. Usuń tabelę _MigrationHistory w Bazie Danych

  3. Bieg Enable-Migrations -EnableAutomaticMigrations -Force

  4. Bieg Add-Migration Reset

Następnie, w klasie public partial class Reset : DbMigration, musisz skomentować wszystkie istniejące i obecne tabele:

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

Jeśli przegapisz ten kawałek, wszystko zawiedzie i musisz zacząć od nowa!

  1. Teraz Biegnij Update-Database -verbose

To powinno się udać, jeśli zrobiłeś powyższe poprawnie, a teraz możesz kontynuować jak zwykle.

 13
Author: Rusty Nail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-14 09:12:41

Moim problemem okazało się, że ręcznie usunąłem folder migracje. Zrobiłem to, ponieważ chciałem wykonać kopię zapasową zawartości, więc po prostu przeciągnąłem folder z projektu. Później naprawiłem problem, umieszczając go z powrotem (po wykonaniu kopii zapasowej), a następnie usuwając folder migracje, klikając prawym przyciskiem myszy go w Eksploratorze rozwiązań i wybierając Usuń z menu podręcznego.

 2
Author: user1738579,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-24 13:39:01

W EntityFramework 6 proszę spróbować:

Add-Migration Initial

W celu aktualizacji początkowego pliku migracji.

 2
Author: Asaf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 11:17:55

W EF6

  1. Usuń wszystkie pliki w folderze 'migracje'... Ale nie "initial create" lub "config".
  2. Usuń bazę danych.
  3. teraz biegnij Add-Migration Initial.
  4. Teraz możesz 'update-database' i wszystko będzie dobrze.
 1
Author: adudley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 14:55:03

In Entity Framework Core.

  1. Usuń wszystkie pliki z folderu migracje.
  2. wpisz w konsoli

Dotnet EF database drop-f-v

Dotnet ef migrations add Initial

Aktualizacja bazy danych Dotnet ef

 0
Author: Восилей,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-05 08:34:55

Biorąc pod uwagę, że wciąż pojawia się to podczas wyszukiwania EF w.Net Core, zamieszczę tutaj moją odpowiedź (ponieważ bardzo mnie to prześladuje). Zauważ, że istnieją pewne subtelności z wersją EF 6. Net (bez polecenia początkowego, i trzeba będzie usunąć Pliki "migawki")

[[3]}(testowane w. NET Core 2.1)

Oto kroki:

  1. Usuń tabelę _efmigrationhistory.
  2. wyszukaj całe rozwiązanie w poszukiwaniu plików zawierających migawkę w swojej nazwie, np. ApplicationDbContextSnapshot.cs oraz Usuń ich.
  3. Run Add-Migration InitialMigration

Uwaga: musisz usunąć wszystkie pliki migawek . Spędziłem niezliczone godziny na usuwaniu bazy danych... Jeśli tego nie zrobisz, wygeneruje to pustą migrację.

Również w #3 możesz po prostu nazwać swoją migrację, jak chcesz.

Oto kilka dodatkowych zasobów: asp.net CORE Migrations generated empty

Reset Entity Framework 7 migracje

 0
Author: Jose A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-25 22:52:11
Enable-Migrations -EnableAutomaticMigrations -Force
 -2
Author: Debendra Dash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-13 09:50:28