2013-10-02 6 views
20

Próbuję wygenerować skrypt SQL, który utworzy dla mnie bazę danych. Do tej pory próbowałem to:Migracja do struktury obiektu - wygenerowanie skryptu sql bieżącego modelu bazy danych

Update-Database -Script -SourceMigration: $InitialDatabase 
Update-Database -Script -SourceMigration:0 

ale oba z nich dają mi skrypty, które są początek od pierwszego do ostatniego migracji. I nie ma początkowego stanu bazy danych, która powinna obejmować utworzenie samej bazy danych i pojedynczej tabeli, która była tam, kiedy dodałem migracje do mojego projektu.

Jak odtworzyć teraz mój model, gdy migracje nie dają pełnego skryptu sql?

+0

Jak rozumiem, zawsze powinien istnieć stan początkowy. Kilka pytań; Czy możliwe jest, że plik migracji został usunięty przez błąd? Jeśli nie, to jakie błędy narzędzie migracji daje podczas aktualizowania bazy danych bez użycia -script? Utworzenie bazy danych zwykle nie pojawia się w migracjach, ponieważ nazwa zależy od ciągu połączenia, chociaż narzędzia do migracji często tworzą bazy danych w razie potrzeby, korzystając z tych informacji. Co zawiera twój skrypt? Wszystko oprócz pierwszego stołu, o którym wspomniałeś? – tne

Odpowiedz

43

Spróbuj:

Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: [MigrationName] 

To powinno zawierać skrypt z początkowej bazy danych do migracji docelowej. Przynajmniej powinien mieć tabelę "MigrationHistory".

Można też spróbować odtworzyć swoje migracje przez:

1) Wracając z powrotem do pierwotnej bazy danych. Jeśli wszystko pójdzie dobrze, powinno to usunąć wszystkie tabele z bazy danych.

Update-Database -TargetMigration: $InitialDatabase 

2) Usuń cały plik migracji w folderze Migracje. Nie musisz usuwać pliku klasy konfiguracji.

3) Dodaj nową migrację. Jednak utworzyłoby to plik migracji z początkowej bazy danych do najnowszego modelu.

Add-Migration -Name: [MigrationName] 

Mam nadzieję, że to pomoże. Proponuję również przejrzenie wpisu na blogu: this. Zwróć uwagę na wskazówkę nr 5, która brzmi "Nigdy nie usuwaj migracji przed jej wycofaniem (w dół)". Z mojego doświadczenia wynika, że ​​powoduje to problemy z migracją, jeśli się ich nie przestrzega.