5

Włączono migracje dla mojej aplikacji ramowej dla encji. Teraz chcę zaktualizować moją bazę danych na moim serwerze zdalnym. Uruchomiłem to polecenie:Struktura podmiotów i migracje - jak zaktualizować bazę danych na serwerze zdalnym?

PM> Update-Database -Script 

Tak więc wygenerował skrypt SQL. Ale ten skrypt zawiera wszystkie metadane, które faktycznie mam w bazie danych, a nie wprowadzone zmiany; tak, kiedy próbuję uruchomić ten skrypt sql na moim serwerze zdalnym, mówi, że tabele już istnieją.

Jak wygenerować skrypt SQL, który będzie zawierał tylko niezbędne aktualizacje?

Odpowiedz

7

Możesz wyznaczyć dla niego określoną migrację. Jeśli masz migrację o nazwie Foo, na przykład:

Update-Database -TargetMigration Foo -Script 

Spowoduje to wygenerowanie skryptu migracji do migracji Foo. Zastąp Foo dowolną migracją, którą musisz uruchomić na tym serwerze.

Add-Migration InitialMigration 
Add-Migration AddCustomers 
Add-Migration AddProjects 

Powiedzmy masz powyższe trzy migracje w projekcie, a lokalna baza danych zawiera wszystkie z nich zastosować, ale zdalna baza danych ma tylko InitialMigration. Można uruchomić następujące:

Update-Database -SourceMigration InitialMigration -TargetMigration AddProjects -Script 

ten będzie miał zastosowanie dwie migracje na zdalnym serwerze (AddCustomers i AddProjects).

+0

Właśnie włączyłem moje migracje, więc nie mam żadnej migracji docelowej, czy muszę najpierw zaktualizować moją lokalną bazę danych, aby to zrobić? – ojek

+0

Jeśli nie masz żadnych migracji, to co dokładnie próbujesz zastosować? – Dismissile

+0

Twoja edycja była wolna. Dzięki za informację! :) – ojek

1

Jeśli masz dostęp za pośrednictwem pulpitu zdalnego do serwera można uruchomić narzędzie do migracji z wiersza poleceń, które zwykle znaleźć w [projectFolder] /packages/EntityFramework.5.0.0/tools/migrate.exe

I nazwać tak:

Migrate.exe [StartupProjectName] /StartupDirectory:"[BIN folder path]" /ConnectionStringName:"[Connection String Name]" /StartupConfigurationFile:"[Path to web or app.config]" 
1

można użyć MigrateDatabaseToLatestVersion initializer automatycznie stosuje się żadnych nowych migracje gdy wdrożyć nową wersję swojej aplikacji:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Configuration>()); 
Powiązane problemy