我正在使用Entity Framework Code First迁移,我有一个场景,我想运行一套集成测试.每次测试运行时,我都想重新创建数据库,并应用所有迁移
步骤应该是:
这是我已添加迁移的现有项目,我使用Enable-Migrations命令创建"InitialCreate"迁移,其中包含将所有表添加到数据库的代码.
我的自定义中的代码IDatabaseInitializer如下:
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();
}
Run Code Online (Sandbox Code Playgroud)
在Up我InitialCreate迁移的方法是没有得到这个代码,这不是我所期待调用.而是在Database.Create()调用方法时创建所有表.我需要运行InitialCreate迁移,因为我在那里有额外的代码来创建存储过程.
所以我的问题是,如何以编程方式创建新数据库并运行所有迁移(包括InitialCreate迁移)?