EF Code First-Migrationen: MigrateDatabaseToLatestVersion ohne NUGET
Ich brauche Hilfe, um zu klären, wie EF Code First-Migrationen Werke auf die Produktion der Maschine.
Ich habe einige entity-Klassen und DbContext abgeleitete Klasse Zugriff auf die Entitäten. Nun, ich möchte diese mehrere Dinge:
- wenn meine Anwendung gestartet wird, muss das erstellen der Datenbank, wenn Datenbank nicht vorhanden ist;
- dann, Datenbank schema muss angepasst werden, um das Modell;
- wenn die Datenbank erstellt wurde, nur jetzt möchte ich, dass Sie einige Indizes;
- auch, wenn die Datenbank erstellt wurde, und gerade jetzt, es muss ausgesät werden, die von einigen anfänglichen Daten;
- all diese Dinge müssen automatisch durchgeführt werden, ohne NUGET-Befehle oder externe tools.
Ich habe einige Artikel über Migrationen, aber Sie konzentriert sich hauptsächlich auf NUGET die Nutzung oder Reine automatische Datenbank-updates zur Laufzeit (über MigrateDatabaseToLatestVersion
). Ich weiß, über DbMigration
Klasse, aber ich kann nicht verstehen, wie, um zusammen zu kleben MigrateDatabaseToLatestVersion
Strategie und DbMigration
.
UPDATE.
In der Tat, ich kann nicht NUGET in das Projekt und ich brauche die Möglichkeit eine migration "von hand".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einfach
MigrateDatabaseToLatestVersion
.MigrateDatabaseToLatestVersion
tun, dassMigrateDatabaseToLatestVersion
tun, dassCode erstellen, basierend Initiale migration der Datenbank und der
Sql
Methode inUp
Methode zu definieren, werden alle Indizes, die Sie benötigen.Wieder verwenden
Sql
im ersten migration oderSeed
Methode in der migration KonfigurationNuGet und Befehle, die Ihnen helfen wird, bereiten Sie es in der design-Zeit (aber man kann einfach Verweis erforderlichen Baugruppen und schreiben Sie alle code selbst). Laufzeit erfordert keine powershell-Befehle.
DbMigrator
ist für Szenarien, in denen Sie nicht verwenden möchtenMigrateDatabaseToLatestVersion
und möchten Sie Steuern die migration von code.DbMigration
Nachkomme, richtig? Wie CF wird wissen, dassMyInitialMigration : DbMigration
angewendet werden müssen jetzt?Add-Migration
Befehl erstelltDbMigration
Klasse für Sie, aber diese Klasse hat auch den zweiten automatisch generierten Teil, woIMigrationMetadata
- Schnittstelle implementiert ist. Diese Schnittstelle definiert die Id-Eigenschaft. Ich denke, dass den ordinalen Wert von Id erhöht sich mit jeder migration so der migrator nutzt die Id zu beantragen Migrationen in der richtigen Reihenfolge und finden Sie die Migrationen wurden bereits angewendet.IMigrationMetadata
bietet hash-Werte für das Modell vor und nach Anwendung der spezifischen migration. Das bedeutet, dass ich nicht umsetzen könnenIMigrationMetadata
von hand, ohne Verwendung von NUGET, nicht wahr? Oder gibt es einige öffentliche API, die berechnen kann, hat für das Modell? Ich kann nicht NUGET (Stand der Frage).Enable-Migrations
Befehl ohne hinzufügen von Verweis auf EF über NuGet. Es funktioniert nicht.