8

私は、EF 5.0を使用していると私は私がfluent migratorを使用しましたし、移行の順序の概念があるCode-based migrationsEntityFrameworkコードベースの移行、順序はどのように決定されますか?

の使用を開始したいと思います。移行は、データベースの移行バージョンに関係なく、移行/ロールバックできます。

Entity Frameworkにも同様の機能がありますか?

私はデータベースバージョンごとに複数の移行実装を維持する予定です(最初はスプリント番号に結びついている可能性が高いです)。

なぜこれが欲しいですか?

私たちの継続的な統合により、環境ごとにデータベースが移行されます。私たちのDevビルドは "後ろ"の1つのバージョンにすぎませんが、QA環境またはPROD環境に移行すると、データベースは複数の移行によって後退します。

私はこれを間違った方法で行っているかもしれません。この場合、CIを使って移行する最良の方法についての意見を聞きたいと思います。

答えて

9

はいEFにはこの機能があります。

Add-Migrationを実行すると、移行ファイルの先頭にタイムスタンプが付きます。これは、自動移行が常に無効になっていると仮定して、順序を決定します。

明示的な移行と自動移行が混在する場合は、移行で生成された.resxファイルに追加のSourceプロパティが追加されていることがあります。これは、EFが明示的なマイグレーションを実行する前に自動マイグレーションを実行する必要があるかどうかを判別する方法です。

1)自動マイグレーションを使用しないでください:

私の経験は私にこれらのガイドラインを教えてくれました。

2)新しい明示的な移行を作成する前に、チームのすべての開発者が最新のコードを持っていることを確認する必要があります。並べ替えがわかりましたが、古いコードからの移行を作成すると問題が発生します。

3)開発者は、Up()のマイグレーション方法でカスタムSQLを書き込む場合、適切なコードを記述して(テストしてください)、Down()メソッドの変更を元に戻すようにしてください。

+1

良い点、歓声。私は、2)EFがマージ/アップデートすることが不可能な現在のモデルのバイナリ表現を持っていることに気づくまで、2)は明白ではないと言うでしょう。 (http://stackoverflow.com/a/10694348/10245も参照してください)機能ブランチのためには、 –

関連する問題