11

Entity Framework Migrations をインストールし、クラスにプロパティを追加して、EF Migrations を試してみました。

私の開発データベースはすぐに更新されました。ここまでは順調ですね。

ここで、本番データベースの移行を最初に使用するための変更スクリプトを作成したいと思います。これを既存のプロジェクトに適用したため、既存のデータベースがあったことに注意してください。

私が持っている移行は次のとおりです。

PM> Get-Migrations
Retrieving migrations that have been applied to the target database.
201204102238194_AutomaticMigration
201203310233324_InitialCreate
PM> 

次を使用してデルタスクリプトを取得できると思いました。

Update-Database -SourceMigration:201203310233324_InitialCreate -TargetMigration:201204102238194_AutomaticMigration  -script

しかし、それは私にエラーを与えます:

「201204102238194_Au​​tomaticMigration」は有効な移行ではありません。ソースとターゲット間のアップグレードをスクリプト化する場合は、明示的な移行をソースとターゲットの両方で使用する必要があります。

何が起こるかを確認するために、2 つのパラメーターを逆にして (後方移行)、- forceフラグを追加した後に期待するスクリプトを取得しました(新しい列が削除されました)。

この最初の移行のスクリプトを取得するにはどうすればよいですか?

4

1 に答える 1

14

既存のデータベースで EF 移行の使用を開始する正しい方法は、現在のデータベースのメタデータを含む空の移行を追加することから始めることです。

初期のデータベース スキーマと互換性のあるモデルにロールバックする必要があると思います。次に、次のコマンドを実行します。

add-migration InitialSchema -IgnoreChanges

これにより、何もしないが現在のモデルのメタデータを含む初期移行が行われます。-IgnoreChangesもちろん、データベースに既に存在するテーブルをさらにカバーするようにコード モデルを拡張した場合は、後で移行を追加できます。

最初の移行手順が整ったら、スクリプトは機能します。

通常、自動移行のみを使用するつもりがない限り、自動移行を使用することはお勧めしません。データベースへの変更を何らかの形で制御したい場合 (スクリプト化を含む) は、コードベースの移行が適しています。

于 2012-04-14T15:28:02.280 に答える