Ich erstelle eine MVC-Anwendung mit .Net Core und muss das Skript für eine Migration generieren.
Mit EF6 habe ich den Befehl ausgeführt
update-database -script
aber wenn ich das Gleiche mit .net Core versuche, wird die nächste Ausnahme ausgelöst:
Update-Datenbank: Es wurde kein Parameter gefunden, der mit dem Parameternamen 'script' übereinstimmt
Wissen Sie, ob es für EF7 ein Äquivalent gibt?
Gemäß EF-Dokumentation können Sie Script-Migration
Befehl.
Wenn Sie nur alle Migrationen skripten möchten, können Sie sie einfach so über die Package Manager-Konsole aufrufen. Wenn Sie nur die Änderungen der letzten Migration skripten möchten, können Sie dies folgendermaßen aufrufen:
Script-Migration -From <PreviousMigration> -To <LastMigration>
Überprüfen Sie unbedingt die Dokumentation, da der Befehl noch einige weitere Optionen enthält.
Sie können dotnet core cli verwenden, um ein Skript zu generieren
dotnet ef migrations script
Sie können dies auch mit dem neuen Power-Shell-Befehl out-file
In eine Datei ablegen.
dotnet ef migrations script | out-file ./script.sql
Sie können auch ein Skript zum Zurücksetzen einer Migration generieren, indem Sie die Parameter auf Skriptmigration zurücksetzen. Wenn Sie beispielsweise zwei Migrationen haben, BadLatestMigration und GoodPreviousMigration, können Sie mit dem folgenden Befehl zu GoodPreviousMigration zurückkehren
Script-Migration BadLatestMigration GoodPreviousMigration
Stellen Sie anschließend sicher, dass Sie Remove-Migration auswählen, um die fehlerhafte Migration zu entfernen
Remove-Migration
Dies funktioniert in .Net Core 2.2.0
dotnet ef migrations script --help
Usage: dotnet ef migrations script [arguments] [options]
Arguments:
<FROM> The starting migration. Defaults to '0' (the initial database).
<TO> The ending migration. Defaults to the last migration.
Options:
-o|--output <FILE> The file to write the result to.
-i|--idempotent Generate a script that can be used on a database at any migration.
-c|--context <DBCONTEXT> The DbContext to use.
-p|--project <PROJECT> The project to use.
-s|--startup-project <PROJECT> The startup project to use.
--framework <FRAMEWORK> The target framework.
--configuration <CONFIGURATION> The configuration to use.
--runtime <RUNTIME_IDENTIFIER> The runtime to use.
--msbuildprojectextensionspath <PATH> The MSBuild project extensions path. Defaults to "obj".
--no-build Don't build the project. Only use this when the build is up-to-date.
-h|--help Show help information
-v|--verbose Show verbose output.
--no-color Don't colorize output.
--prefix-output Prefix output with level.
also kannst du es versuchen
dotnet ef migrations script ver1 ver2
dotnet ef migrations script ver1 ver2 -o ./script.sql
Dies funktioniert in .Net Core 2.1