私は最近Entity Framework 5にアップグレードしたMVC4アプリケーションを持っており、開発スタイルからの移行を使用してデータベースを移動しようとしていますそれぞれの実行を削除して作成します。Entity Framework 5の移行:データベースの初期移行と単一シードの設定
これは、私のアプリ起動機能で行っていることです。
protected void Application_Start()
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion< MyContext, Configuration >());
...
}
私は自分のリポジトリプロジェクトにEnable-Migrations
コマンドを実行したと私は経由予想通り、それはそれを作成したデータベースを削除すると、私は、しかし、それが作成されたファイルのみがConfiguration
だった、これは最初の移行ファイルを作成するだろうと思いました最初にコードを読み込み、データベースを設定ファイルからシードします。設定ファイルでは、私はそれは、ウェブサイトが起動し、重複すべてのシード・データを何度も何度も私のConfiguration
ファイルにするたびに、シード関数を実行しかしAddOrUpdate()
にすべてAdd()
の機能を変更しました。
私は私が読んブログは、それは、私はそこにシード・データを置くことができるだろうが、それは誰もが私がDBをセットアップする方法を説明することができません
なかったことを示唆したとして、それはinitial migration
ファイルを作成することを想像しコードでそれは一度だけ種まきますか?
LINK: The migrations blog post I followed
これは私がマイグレーションを実行するためroundhouseを使用するように切り替えたため、EFのmigrate.exeのを使用するための非常に興味深いですが。私はまだモデルに基づいて私の移行を足場にEFを使用していますが、私はSQLファイルに移行を書き込むための小さなコンソールアプリケーションを書いた。ラウンドハウスを使用して、自分のレーキ構築スクリプトを使って移行を実行します。もう少し複雑なプロセスがありますが、アプリケーションの起動時にEFを使用して移行を実行するよりもはるかに安定しています。
実際のマイグレーションにシーディングを実装することなく、それを実行できる唯一の方法であるため、毎回実行されると思います。あなたのシードコードがマイグレーションのUp()の中にあった場合は、一度だけ実行されます。これは通常、データベースの変更をいくつか行い、スキーマのこの新しい部分にいくつかのデータを入れたいので、私にとっては直感的です。 – FRoZeN
Ifこのメソッドを使用してシードメソッドを実行することはありません。私は今も、マイグレーションで播種をすることを好む - それが一度だけ実行されることを知っている。 – oldwizard
こんにちは。実際には、最初のデータベースは移行とみなされます。つまり、データベースからデータベースへ移行します。しかし、私は移行にシードを持たせることの利点を見ることができます。 –