Dodaję nową migrację, ale ten komunikat pokazuje:
Nie można wygenerować jawnej migracji, ponieważ oczekują następujące jawne migracje: [201203170856167_left]. Zastosuj oczekujące jawne migracje przed próbą wygenerowania nowej jawnej migracji.
Czy ktoś może mi pomóc?
entity-framework
ef-migrations
Noman Saeed
źródło
źródło
Odpowiedzi:
Informuje, że w aplikacji jest jakaś nieprzetworzona migracja i wymaga uruchomienia,
Update-Database
zanim będzie można dodać kolejną migrację.źródło
-StartupProject ContentHub.Database
Update-Database
daje> Nie można zaktualizować bazy danych, aby pasowała do obecnego modelu, ponieważ są oczekujące zmianyMiałem ten sam problem. Najwyraźniej struktura jednostki generuje ten błąd, gdy nie może połączyć się z bazą danych. Dlatego upewnij się, że możesz uzyskać do niego dostęp, zanim zaczniesz szukać innych problemów.
źródło
Musisz albo uruchomić "update-database" z konsoli menedżera pakietów, aby przesłać zmiany do bazy danych LUB możesz usunąć oczekujący plik migracji ([201203170856167_left]) z folderu Migracje, a następnie ponownie uruchomić "add-migrację" do utwórz zupełnie nową migrację na podstawie swoich zmian.
źródło
Ten błąd może również oznaczać, że migracje nie są już rozpoznawane. Zdarzyło mi się to po zmianie wartości ContextKey w Migrations.Configuration. Rozwiązaniem było po prostu zaktualizowanie ContextKey w tabeli bazy danych „__MigrationHistory” (lub chyba przywrócenie wartości w klasie Configuration). ContextKey i Przestrzeń nazw w aplikacji powinny być zgodne.
źródło
1. Parametry połączenia / Uprawnienia połączenia
Sprawdź ponownie parametry połączenia.
Upewnij się, że użytkownik, z którym się łączysz, nadal ma uprawnienia do odczytu
[__MigrationHistory]
i uprawnienia do edytowania schematu.Możesz również spróbować zmienić parametry połączenia w pliku konfiguracyjnym aplikacji lub sieci Web, aby użyć zintegrowanych zabezpieczeń (Windows Auth) do uruchomienia polecenia add -igration jako siebie .
Na przykład:
Te parametry połączenia zostaną umieszczone w pliku App.config projektu, w którym znajduje się DbContext.
2. Projekt startowy
Można określić projektu StartUp w linii poleceń można też kliknąć prawym przyciskiem myszy projektu z
DbContext
,Configuration
i migracje folder i wybierz Ustaw jako projektu Autostart . Mówię poważnie, to może faktycznie pomóc.źródło
Integrated Security
poprawka działa świetnie!Miałem ten sam problem i udało mi się rozwiązać z kilkoma wskazówkami z powyższych odpowiedzi:
Użyj polecenia „update-database -verbose” w konsoli menedżera pakietów, aby uzyskać bardziej szczegółowe informacje, z którymi migracje próbują się połączyć. (Pomogłem w moim przypadku dowiedzieć się, że mój projekt startowy nie został poprawnie ustawiony ...)
źródło
Jeśli nie korzystałeś,
Update-Database
możesz go po prostu usunąć. Jeśli uruchomiłeś aktualizację, wycofaj ją za pomocąUpdate-Database -TargetMigration "NameOfPreviousMigration"
, a następnie usuń.Źródła: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
Skopiowałem ten tekst bezpośrednio z tego miejsca: Jak cofnąć ostatnie polecenie Add-Migration?
źródło
Podczas napotkania tego problemu spróbuj dodać parametry do polecenia cmdlet add -igration. Na przykład określenie projektu startowego oraz nazwy parametrów połączenia może pomóc EF w znalezieniu docelowej bazy danych.
Gdzie:
Delta_Defect_0973 to nazwa Twojej migracji
your.namespace.ContextClassName to nazwa klasy konfiguracji w folderze migracji, poprzedzona pełną przestrzenią nazw.
DeltaProject to nazwa twojego głównego projektu z plikiem web.config lub app.config.
DeltaSQL to nazwa ciągu połączenia zdefiniowanego w pliku web.config lub app.config.
źródło
Ten błąd oznacza, że oczekujące migracje muszą zostać zatwierdzone, zanim będzie można wykonać kolejną jawną migrację. Możesz wybrać
Po tym możesz ponownie uruchomić "Dodaj migrację ..."
Mam nadzieję, że to pomoże
źródło
Tylko moje dwa centy:
Mój scenariusz:
Rozwiązanie:
Aby obejść ten problem, podałem bardziej szczegółowe parametry:
Jestem skłonny sądzić, że możesz ustawić ustawienie w folderze app.config, aby umożliwić domyślne ustawienie tego zachowania, dzięki czemu nie musisz za każdym razem podawać jawnych parametrów. Jednak nie jestem pewien, jak to zrobić.
źródło
-ConnectionStringName
jest alternatywą dla tego i pobierze parametry połączenia z konfiguracji według nazwyJest niejasność, a więc błąd. Najlepszym sposobem jest wykluczenie bieżącego pliku migracji i utworzenie nowego pliku migracji ( dodawanie-migracja ), a następnie skopiowanie zawartości nowej migracji do wykluczonego pliku i ponowne jej dołączenie oraz uruchomienie polecenia update-database .
źródło
update-database
polecenie, a następnie powtórzyłemadd-migration
polecenie i zadziałałorozwiązałem ten sam problem:
źródło
Miałem te same problemy i mogłem go rozwiązać tylko za pomocą Add-Migration 'MigrationName' -Force
Z-Force jest ważną częścią.
źródło
W mojej lokalnej bazie danych nie ma
__MigrationHistory
wypełnionego lub istniejącego pliku. Ręcznie utworzyłem tabelę, a następnie przeprowadziłem migrację danych w tej tabeli z PROD do mojej lokalnej bazy danych. To spowodowało, że VS pomyślał, że migracje zostały zastosowane (a tak było).źródło
Wskazówka:
-Script
jeśli nie masz pewności , zawsze dobrze jest używać przełącznika do poleceń migracji. To również naprawdę pomaga zrozumieć, coUpdate-Database
tak naprawdę robi.Uruchamiam następujące polecenie, aby zaktualizować bazę danych, a następnie otrzymuję skrypt, który mogę zastosować ręcznie (lub po prostu uruchom go ponownie bez tagu -Script).
Ponieważ
Update-Database
uruchomiłbym następujące:Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
Gdzie
SQL_AzureLive
jest nazwane parametry połączenia w mojej konfiguracji.Następnie mogę sprawdzić, czy SQL wygląda prawidłowo, zastosować go i gotowe. Jak wielu innych powiedziało, jeśli parametry połączenia są nieprawidłowe lub nieprawidłowe, otrzymasz ten błąd.
źródło
U mnie usunąłem plik migracji (w Twoim przypadku „201203170856167_left”) z
Migrations
folderu, a następnie uruchomiłem poniższe polecenie w konsoli Menedżera pakietówźródło
Scenariusz
Problem
Po aktualizacji z poziomu głównego uruchamiam „Add-Migration my_migration_name”, ale pojawia się następujący błąd:
Tak więc uruchamiam „Update-Database” i otrzymuję następujący błąd:
Rozwiązanie
W tym momencie ponowne uruchomienie „Add-Migration my_migration_name” rozwiązało mój problem. Moja teoria jest taka, że uruchomienie „Update-Database” ma wszystko w takim stanie, w jakim było potrzebne, aby „Add-Migration” działało.
źródło
Trafiłem też na ten problem. Pojawiło się, gdy utworzyłem nową bazę danych i miałem oczekujące zmiany dotyczące migracji bazy danych w pierwszej kolejności kodu, a następnie próbowałem uruchomić polecenie „Update-Database”. Rozwiązanie: uruchom polecenie „Add-Migration -MigrationName”, aby utworzyć nową migrację dla nowej bazy danych. Następnie uruchom polecenie „Update-Database”.
źródło
Miałem ten problem również w przypadku bazy danych, o której wiedziałem, że jest aktualna podczas uruchamiania Add-Migration. Rozwiązany przez po prostu ponowne uruchomienie polecenia Add-Migration. Podejrzewam problem z łącznością, zgodnie z sugestią Robina Dorbella powyżej.
źródło
Stało się tak, gdy nagle zmieniłem nazwę klasy starej migracji, która już istnieje w db. Sprawdziłem historię VCS, ustaliłem to i ponownie zmieniłem nazwę. Wszystko działało później.
źródło
Zrobiłem w inny sposób. Porzuciłem bazę danych całkowicie i ponownie uruchomiłem "update-database" w vs.
źródło
Miałem prostszy problem. VS błędnie zgłosił ten błąd, gdy miałem połączenie VPN z witryną klienta połączoną z moją stacją roboczą. Problem polegał na tym, że zabezpieczenia DBMS były ustawione na akceptowanie żądań tylko z mojego prawdziwego lokalnego adresu IP. Samo wyłączenie VPN rozwiązało problem.
źródło
W moim przypadku zapomniałem dodać mój adres IP w regułach zapory na Azure, ponieważ nie mogłem połączyć się z bazą danych, otrzymałem ten błąd. Dlatego specjalnie dla mojego przypadku dodałem mój adres IP w regułach zapory bazy danych na platformie Azure i wszystko działało dobrze. Poza tym może to być problem z proxy / połączeniem internetowym / nazwą użytkownika DB / ciągiem połączenia z bazą danych itp. LUB oczywiście możesz mieć oczekujące migracje, dla których musisz uruchomić polecenie Update-Database.
źródło
Historycznie zawsze rozwiązywałem ten problem, usuwając oczekujące migracje lub jeśli pozostał tylko 1 i było to najbardziej pożądane, używając
-f
do odtworzenia.Ostatnio przestało to dla mnie działać.
Kiedy stało się to po raz pierwszy, ponownie uruchomiłem program Visual Studio, a następnie pozwoliłem mi kontynuować.
Za drugim razem zadziałało dopiero po przeprowadzeniu czyszczenia projektu. Wyglądało to prawie tak, jakby oczekujące migracje zostały zachowane pomimo usunięcia wszystkich plików z eksploratora.
źródło
To nie będzie odpowiedź dla wielu osób, ale EF wyrzuci ten błąd, gdy nie może połączyć się z DB. Jeśli pracujesz z domu tak jak ja, upewnij się, że nadal masz połączenie z VPN!
źródło
Dokładnie ten sam problem miałem zaraz po powrocie z migracji na inną.
W moim przypadku „migracja docelowa” z „migracji06” do „migracji04”.
Musiałem usunąć „migrację0” 6, a następnie udało mi się wymusić utworzenie „migracji05”. Zasadniczo oznacza to, że musisz po prostu zachować następną migrację po migracji docelowej.
źródło
W moim przypadku (używając MS Visual Studio) było to tak proste, jak ponowne uruchomienie Visual Studio.
źródło