.Net Coreを使用してMVCアプリケーションを構築しており、移行のスクリプトを生成する必要があります。
EF6でコマンドを実行しました
update-database -script
しかし、.net Coreで同じことをしようとすると、次の例外がスローされます。
更新-データベース:パラメーター名 'script'に一致するパラメーターが見つかりません
EFコアに相当するものがあるかどうか知っていますか?
.Net Coreを使用してMVCアプリケーションを構築しており、移行のスクリプトを生成する必要があります。
EF6でコマンドを実行しました
update-database -script
しかし、.net Coreで同じことをしようとすると、次の例外がスローされます。
更新-データベース:パラメーター名 'script'に一致するパラメーターが見つかりません
EFコアに相当するものがあるかどうか知っていますか?
回答:
EFのドキュメントに従って、Script-Migration
コマンドを使用できます。
すべての移行をスクリプト化するだけの場合は、そのようにパッケージマネージャーコンソールから呼び出すことができます。前回の移行からの変更をスクリプト化するだけの場合は、次のように呼び出すことができます。
Script-Migration -From <PreviousMigration> -To <LastMigration>
必ずドキュメントを確認してください。コマンドにはさらにいくつかのオプションがあります。
dotnet corecliを使用してスクリプトを生成できます
dotnet ef migrations script
また、新しいPowerShellout-file
コマンドを使用してこれをファイルに保存することもできます。
dotnet ef migrations script | out-file ./script.sql
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.
だから、あなたは試すことができます
dotnet ef migrations script ver1 ver2
dotnet ef migrations script ver1 ver2 -o ./script.sql
これは.NetCore2.1で機能します
パラメータをScript-Migrationに戻すことにより、移行をロールバックするスクリプトを生成することもできます。たとえば、BadLatestMigrationとGoodPreviousMigrationの2つの移行がある場合、次のコマンドを使用してGoodPreviousMigrationに戻すことができます。
Script-Migration BadLatestMigration GoodPreviousMigration
その後、必ず削除-移行して、不正な移行を削除してください
Remove-Migration
これは.NetCore2.2.0で機能します
これもSQLのみを生成します
Update-Database -script -TargetMigration TO -SourceMigration FROM