8

私はウェブ上で答えが見つからないという問題があります。EF 4.3移行 - ダウングレードスクリプトの作成方法?

私はCodeFirst EF 4.3.1 MsSQLでの移行を使用しています。

私はいくつかの移行を追加しましたが、今は2つの移行の間にアップグレード/ダウングレードのためのスクリプトを作成したいと思います。アップグレードの場合

私が正常にアップグレードスクリプトを再現する次のコマンドを実行します。

PM> Update-Database -Script -SourceMigration:"201205161144187_AddPostAbstract" -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

しかし、ダウングレードのために私は次のエラーで失敗し、次のコマンドを実行します。

PM> Update-Database -Script -SourceMigration:"201205161203310_BlogLimitsAndTableRename" -TargetMigration:"201205161144187_AddPostAbstract" 
Scripting the downgrade between two specified migrations is not supported. 

任意のアイデアをダウングレードスクリプトを生成するにはどうしたらいいですか?

ありがとうございました。

答えて

10

移行APIは、「最終バージョン」からのみダウングレードしたいと考えているようです。

BlogLimitsAndTableRenameは、最新の移行(最後に適用された)である場合は、単純に実行することができます。

Update-Database -Script -TargetMigration:"201205161144187_AddPostAbstract" 

を、それはあなたが最初にあなたの開発データベースを元に戻す必要があるあなたの最後の移行ではない場合:

Update-Database -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

これで、最初のコマンドを使用してスクリプトを取得できるはずです。

+0

これは意味があります。状態5のデータベースがあるとしたら、スクリプトを4から3にダウングレードしようとします。その後、データベースが簡単に破損する可能性があります。本当に状態4のdbを指すか、または状態4にローカルにプッシュされた状態にすると、不可逆的な混乱を起こす前にそれについて考えるようになります。 OTOHには、いくつかの-Forceスイッチまたは大きな赤色の警告でサポートされる可能性があります。 :) –

+1

私は状態5のデータベースを持っていると思って、今度は5から2にダウングレードするスクリプトを手に入れました。 EFの移行では、5から4にダウングレードし、4から3にダウングレードしてから3から2にダウングレードします。私が望むのは、実際にそれらを実行する必要なしに、これらのダウングレードをすべて含む単一のスクリプトを作成することだけです。 (例えば、アップグレードの場合、状態5のデータベースを作成し、2から5へのアップグレードのスクリプトを生成することができます)。 – mayash

+0

または、状態5のデータベースを作成し、2から4へのアップグレードスクリプトを作成することができます。 – mayash

関連する問題