Aby wyjaśnić, co dzieje się z polecenia swojej update-bazy i dlaczego metoda w nasieniu context.Database.CreateIfNotExists()
nie działa:
Po uruchomieniu polecenia update-bazy najpierw patrzy na ciągu połączenia, aby sprawdzić, czy baza danych jest tu. Jeśli tak, to przegląda tabelę historii migracji i sprawdza, czy klasa jest w tobie DbContext
. Jeśli zauważy, że brakuje tabel lub zmian, spróbuje zaktualizować bazę danych. Metoda Seed nie jest wywoływana, dopóki nie zostanie wykonana, dlatego to nie zadziałało.
Podczas pracy z kodowaniem EF Najpierw zazwyczaj podchodzę do problemu na kilka różnych sposobów w zależności od wielkości bazy danych. Zwykle wybrałem trasę usuwania wszystkich tabel (łącznie z tabelą historii migracji), a następnie ponownie uruchomiłem komendę update-database. Działa dobrze, po prostu naprawdę czasochłonne, jeśli masz dużo tabel z wieloma ograniczeniami FK.
W końcu się zmęczyłem i znalazłem these scripts, aby upuścić stoły wykładniczo szybciej. Poszedłem do tego, ponieważ korzystałem z mojej aplikacji na platformie Azure. Gdy uruchomię go na moim komputerze lokalnym, po prostu usunę całą bazę danych i utworzę zupełnie nową bazę danych o tej samej nazwie.
Eleganckie rozwiązanie? Nie. Czy to działa? Bardziej lub mniej ...
Migracje nie naprawią uszkodzonej bazy danych. Przenosi bazę danych ze znanego stanu do nowego znanego stanu. Będziesz musiał odtworzyć tabelę ręcznie lub utworzyć zupełnie nową bazę danych. –