it-swarm.com.de

Kann ich zuerst ein Skript für eine Migration mit EF-Code und .net-Core generieren?

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.

74
Gasper

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
10
Ahmar

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

5
Mike
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

1
AttackingMilo