私はEntity Framework Code First Migrationを使用しており、統合テストスイートを実行するシナリオがあります。EF 5、コードファースト - 新しいデータベースを作成し、プログラムですべてのマイグレーションを実行
が- ドロップ既存のテストデータベース(もしあれば)
- は、新しいテストを作成します。テストを実行するたびに、私は
手順があるべきデータベースを再作成し、すべてのマイグレーションを適用したいですデータベース、そしてこれは私がに移行を追加した、と私は有効-移行は「InitialCreate」移行番目を作成するためのコマンドを使用既存のプロジェクトであるすべてのマイグレーション
- シードデータ
を適用で私のデータベースにすべてのテーブルを追加するコードが含まれています。
私のカスタムIDatabaseInitializer
のコードは次のとおりです。私のInitialCreate移行のUp
方法は、私が期待したものではありませんこれは、このコードによって呼び出さ取得されていない
public void InitializeDatabase(MyContext context)
{
//delete any existing database, and re-create
context.Database.Delete();
context.Database.Create();
//apply all migrations
var dbMigrator = new DbMigrator(new Configuration());
dbMigrator.Update();
//seed with data
this.Seed(context);
context.SaveChanges();
}
。代わりに、Database.Create()
メソッドが呼び出されると、すべてのテーブルが作成されます。ストアドプロシージャを作成するためのコードが追加されているため、InitialCreateの移行が必要です。
私の質問は、プログラムで新しいデータベースを作成し、すべての移行(InitialCreateの移行を含む)を実行する方法です。