Pierwszy, czytałem te pytania/odpowiedzi:Nie można uruchomić migrację EF5 z istniejącej bazy danych
- EF-migration message
- How can I stop Add-Migration checking my database has no pending migrations when using Code-Based migrations?
- Make EF4.3 Code First Migrations ignore pending migrations
Te wszystkie wydają się być dla EF wersje wcześniejsze niż EF5, a moja sytuacja nie pasuje do tych odpowiedzi. Tak, pozwól mi opisać moją sytuację.
- Moja aplikacja została oryginalnie utworzona przy użyciu EF4, model pierwszy. Zaprojektowałem moją bazę danych za pomocą projektanta GUI i wykorzystałem ją do wygenerowania mojej bazy danych.
- Prowadziłem i gromadzę dane w bazie danych przez kilka miesięcy. Naprawdę nie mogę stracić tych danych.
- Rozgałęziłem swój kod, zainstalowałem EF5 z NuGet i użyłem EF Power Tools do wygenerowania mojego modelu z mojej bazy danych, klikając prawym przyciskiem myszy nowy projekt biblioteki klas i wybierając
Entity Framework | Reverse engineer code first
. - Udało mi się bezproblemowo powrócić do mojego nowego projektu, przekonwertować mój projekt na nowy DbContext zamiast ObjectContext i usunąć bibliotekę klasy EF4, która posiadała mój stary model. Program działa świetnie!
Teraz chcę wypróbować automatyczne migracje, z którymi miałem małe doświadczenie w Ruby on Rails. Oto co zrobiłem:
- Ran
Enable-Migrations
. Miałam kłopoty z powodu ciągów połączeń i aplikacji app.config, ale ostatecznie udało mi się. Jednak this MSDN page mówi, że powinno to automatycznie wygenerować pierwszą migrację, aby doprowadzić mnie do punktu, w którym już jestem. Tak nie było. - Przebiegł
Add-Migration InitialSchema
, aby wykonać czynności, które nie zostały automatycznie wykonane w kroku 1. To zadziałało. - Dodano właściwość do jednego z moich modeli obiektów, a następnie próbował uruchomić
Add-Migration AddSerialToLogEntries
i wręczono:
Nie można wygenerować wyraźny migrację ponieważ następujące wyraźne migracje są oczekujące: [201307190100268_InitialSchema] . Zastosuj oczekujące migracje jawne przed próbą wygenerowania nowej jawnej migracji .
Próba zastosowania migracji do istniejącej bazy danych nie powiodła się, co nie jest zaskakujące.
Inne odpowiedzi, o których wspomniałem powyżej, w zasadzie mówiły, że mam pecha, ale jak powiedziałem, były to dla starszych wersji Entity Framework. Czy mam tu jakieś opcje?
Pisząc to pytanie, pomyślałem, że będę mógł użyć programu SQL Server Management Studio do eksportu moich danych do skryptu SQL, usunięcia całej bazy danych, umożliwienia jej utworzenia przez EF, a następnie uruchomienia skryptów w celu odzyskania danych ... Spróbuję tego jutro, kiedy będę miał czas, ale chciałbym usłyszeć, czy są inne opcje, ponieważ nie jestem w 100% pewny, że to zadziała i nie chciałbym mieć żadnych błędów w danych wprowadzonych do procesu.
Świetna, szczegółowa odpowiedź. Wypróbuję twoje kroki tak szybko, jak tylko będę mógł. Wiem, że mogę "cofnąć" włączanie migracji, po prostu usuwając folder Migracje, ale czy mogę po prostu usunąć pierwsze i poprzednie metody migracji zamiast ich usuwania i uruchamiania od nowa? – Steve
@Steve: Tak, to też powinno działać. – Slauma
Pracowałem świetnie, dziękuję! – Steve