6

Mam projekt Entity Framework 6 CF, który ma już kilka migracji.Scalanie wpisów migracji w Entity Framework

Model jest teraz stabilny i nie ma potrzeby przechowywania historii migracji, która już istnieje.

Czy istnieje sposób na zresetowanie modelu i połączenie wszystkich poleceń migracji z początkową migracją?

Jako przykład, pierwsza migracja dodaje kolumnę, podczas gdy druga migracja dodaje unikalny indeks nieklastrowy. Teraz chcę zobaczyć wszystkie te zmiany bezpośrednio w OnModelCreating, a nie w osobnych migracjach.

Odpowiedz

5

Migracje mają zarówno numery Up, jak i Down. Zawsze możesz ponownie przetasować aplikację, likwidując migracje, a następnie dodając nową migrację. Proces Down nie zmienia modelu, a jedynie zmiany w bazie danych. Użyj Update-Database -Target:migrationTargetName lub Update-Database -TargetMigration:migrationNumber.

Jeśli chcesz przeprowadzić migrację rozpoczynającą się bez bazy danych i kończącą się bieżącym modelem, możesz zerwać wszystkie migracje za pomocą Update-Database -TargetMigration:0. Dobrym pomysłem jest zburzenie bazy danych, a następnie uruchomienie testu Update-Database w celu zweryfikowania, czy zmiany w bazie danych są zsynchronizowane.

Pamiętaj, że jeśli zmienisz swoje migracje na 0, a następnie uruchomisz Add-Migration, zechcesz bardzo dokładnie przyjrzeć się wygenerowanemu rusztowaniu, ponieważ prawdopodobnie będzie on drastycznie inny niż przyrostowe zmiany.

+1

Ponieważ nie jestem zaznajomiony z terminologią, oto, co rozumiem do tej pory. Obniżenie bazy danych do migracji '0', cofnie wszystkie' Up', wykonaj wszystkie 'Down's i zresetuj DB do' InitialMigration'. To, czego nie dostaję, 'Update-Database' zsynchronizuje się z bieżącym modelem bazy danych. Czy automatycznie wygeneruje pojedyncze "Up" i "Down", tak, że powstały model jest tym, od czego zacząłem, zanim je zburzę? –

+0

po przejściu do Migracji '0', należy uruchomić' Add-Migration', aby utworzyć nową migrację, która zaczyna się od bieżącego stanu ('0') i rusztowań do bieżącego modelu. uruchamianie 'Update-Database' uruchamia wszystkie instrukcje' Up', które są przydatne do testowania, gdy masz wiele migracji. – Claies

+0

Prawdopodobnie nie wyraziłem wyraźnie mojego zamiaru. Mamy obecnie liczbę migracji "x" i skonsolidowany skrót to na przykład 'abc'. Chcę stracić wszystkie 'Down's i mieć tylko jedno' Up' lub sam model zaktualizowany tak, że hash staje się 'abc'. Wszystkie zapisy migracji powyżej początkowego '0' powinny zostać odrzucone, tak jakbyśmy po raz pierwszy uruchomili' InitialMigration' na nowym modelu z hashem 'xyz'. –

Powiązane problemy