を使用して最近作成したデータベースのローカルインスタンスがあるため、InitalCreate
エントリが現時点でのコードと一致する__MigrationHistory
テーブルが存在します。EF4.3コードの最初の移行で保留中の移行が無視される
ただし、コードベースの移行は[移行]フォルダ内に存在します。これらは開発およびステージング環境で実行され、これらのデータベースをコードに合わせて提供します。しかし、現在のコードを使用してデータベースを作成したので、ローカルに適用する必要はありません。
ここで、モデルを変更して、対応する移行を作成する必要があります。私は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ツールを指すことはできません。私が行った変更だけに合った移行が欲しい。
私がいくつかのオプションを持っていますが、どれも理想的ではないようだ。
- 古い移行を復元し、データベースをアップグレードし、アドインの移行コマンドを実行し、移行フォルダから他の移行を削除します。これは簡単ですが、ちょっとハッキリしているようです。
- 最初の移行が適用されたソースコントロール内のモデルのバージョンに戻し、ビルドしてデータベースを作成するために使用します。最新版を入手してすべての移行を適用したら、移行を追加する準備が整いました。これは多くの努力のようです!
- 手動で移行を作成します。
これを管理する方法についてご意見はありますか?私たちは、あなたのオプション#1のバリアントを使用することを計画している
これは、 'DbContext.Database.Create()'を使用して作成されたデータベースでは、以前の移行操作を実行できないため機能しません。あなたの新しいローカルデータベースに既にその列があるので、 'SqlException'を取得し、関連する行が決して' __MigrationHistory'テーブルに追加されないように、移行を想像してみてください。正しいアプローチだと私の答えを見てください。 –