最近を使用して作成したデータベースのローカルインスタンスがあるDbContext.Database.Create()
ため、現在のコードに一致__MigrationHistory
するエントリを含むテーブルが存在します。InitalCreate
ただし、一部のコードベースの移行はMigrationsフォルダーに存在します。これらは、開発環境とステージング環境で実行され、これらのデータベースをコードと一致させます。ただし、現在のコードを使用してデータベースを作成したので、ローカルに適用する必要はありません。
モデルに変更を加え、対応する移行を作成する必要があります。しかし、実行するAdd-Migration TestMigration
と、次のエラーが発生します
Unable to generate an explicit migration because the following explicit
migrations are pending:
[201203271113060_AddTableX,
201203290856574_AlterColumnY]
Apply the pending explicit migrations before attempting to generate
a new explicit migration.
この場合はどうすればよいですか?バージョンがローカルにあるものと一致することが保証されていないため、Add-Migrationツールを別の環境に向けることはできません。行った変更のみに一致する移行が必要です。
私にはいくつかの選択肢があるようですが、どれも理想的ではありません。
- Migrationsフォルダーから他の移行を削除し、Add-Migrationコマンドを実行し、データベースをアップグレードしてから、古い移行を復元します。これは単純ですが、少しハックなようです。
- 最初の移行が適用されたソース管理のモデルのバージョンに戻し、これをビルドしてデータベースを作成します。次に、最新バージョンを入手し、すべての移行を適用します。これで、移行を追加する準備が整いました。これは大変な努力のようです!
- 移行を手動で作成します。
誰かがこれを管理する方法について何か提案がありますか?