Używam EF Code First z EF 5 w VS 2012. Używam update-database
polecenia PM i mam prostą metodę inicjatora, aby wypełnić niektóre tabele przykładowymi danymi.
Chciałbym usunąć i ponownie utworzyć plik x.mdb. Wydaje się, że historia aktualizacji nie jest zsynchronizowana. Jeśli skomentuję wszystkie moje zestawy DBSets w moim kontekście, update-database
działa bez błędów, ale pozostawia niektóre tabele w DB. Ponieważ nie mam cennych danych w DB, najprościej jest zresetować wszystko.
Jak mogę to osiągnąć?
źródło
Jeśli pracujesz we właściwy sposób, aby utworzyć migracje za pomocą polecenia
Add-Migration "Name_Of_Migration"
, możesz wykonać następujące czynności, aby uzyskać czysty start (reset, oczywiście z utratą danych ):Update-database -TargetMigration:0
Zwykle twoja baza danych jest teraz pusta, ponieważ metody w dół zostały wykonane.
Update-database
Spowoduje to odtworzenie bazy danych do bieżącej migracji
źródło
Pojedyncza linijka do upuszczania, tworzenia i wysyłania z konsoli menedżera pakietów:
update-database -TargetMigration:0 | update-database -force
Kaboom.
źródło
Update-Database 0
. Niezależnie od tego, nie pasuje to do przypadku OP, w którym „Historia aktualizacji wydaje się być niezsynchronizowana” ; to podejście działa poprzez uruchomienie migracji „w dół” dla każdej migracji przeprowadzonej do tej pory w bazie danych, więc jeśli usunąłeś migrację, która była wcześniej zastosowana, to się nie powiedzie (i może się również nie powieść, jeśli zmodyfikujesz migrację stosując go). Odpowiedź akceptowana jest bardziej niezawodny. -1 za to i niewyjaśnione powtórzenieupdate-database -force
.W przypadku EntityFrameworkCore możesz użyć następujących:
Update-Database -Migration 0
Spowoduje to usunięcie wszystkich migracji z bazy danych. Następnie możesz użyć:
Aby usunąć migrację. Wreszcie możesz odtworzyć migrację i zastosować ją do bazy danych.
Add-Migration Initialize Update-Database
Przetestowano na EFCore v2.1.0
źródło
Co powiesz na ..
static void Main(string[] args) { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>()); // C // o // d // i // n // g }
Wybrałem to z Programming Entity Framework: Code First , Pg 28 First Edition.
źródło
Jeśli utworzyłeś bazę danych zgodnie z tym samouczkiem: https://msdn.microsoft.com/en-au/data/jj193542.aspx
... to może zadziałać:
.mdf
i.ldf
w katalogu projektuźródło
Wykonaj następujące kroki:
Dbset<Item> Items{get;set;}
iw konsoli Nuget uruchom te poleceniaSpowoduje to usunięcie tabel, które nie istnieją w kontekście, ale zostały już utworzone w bazie danych
źródło
dbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();
źródło
Pozwól, że pomogę w aktualizacji odpowiedzi tutaj, ponieważ nowi użytkownicy uznają to za przydatne. Uważam, że celem jest usunięcie samej bazy danych i odtworzenie jej przy użyciu podejścia EF Code First. 1. Otwórz projekt w programie Visual Studio, używając rozszerzenia „.sln”. 2. Wybierz Eksplorator serwera (często znajduje się po lewej stronie) 3. Wybierz Eksplorator obiektów SQL Server. 4. Baza danych, którą chcesz usunąć, byłaby wymieniona w dowolnej lokalnej bazie danych. Kliknij prawym przyciskiem myszy i wybierz usuń.
źródło
update-database
, a ponieważ wspomina o seedowaniu, zakładam, że szukał automatycznego rozwiązania do testowania. Dlatego Twoje rozwiązanie UI prawdopodobnie nie jest tym, czego szukają.Istnieje wiele sposobów usunięcia bazy danych lub zaktualizowania istniejącej bazy danych, po prostu możesz przełączyć się na poprzednie migracje.
dotnet ef database update previousMigraionName
Ale niektóre bazy danych mają ograniczenia, takie jak brak zezwolenia na modyfikację po utworzeniu relacji, co oznacza, że nie masz uprawnień do usuwania kolumn z ef core dostawców baz danych, ale przez większość czasu w ef core drop baza danych jest dozwolona. Więc możesz usunąć DB za pomocą polecenia drop, a następnie używasz ponownie poprzedniej migracji.
dotnet ef database drop PMC command PM> drop-database
LUB możesz ręcznie usunąć bazę danych i przeprowadzić migrację.
źródło
Ponieważ to pytanie zostanie kiedyś kliknięte przez nowych użytkowników EF Core i uważam, że najlepsze odpowiedzi są nieco niepotrzebnie destrukcyjne, pokażę ci sposób, aby zacząć „od nowa”. Uważaj, spowoduje to usunięcie wszystkich danych.
dotnet ef database update
źródło