小编Mat*_*att的帖子

EF 5,Code First - 创建一个新数据库并以编程方式运行所有迁移

我正在使用Entity Framework Code First迁移,我有一个场景,我想运行一套集成测试.每次测试运行时,我都想重新创建数据库,并应用所有迁移

步骤应该是:

  1. 删除现有的测试数据库(如果有)
  2. 创建新的测试数据库,并应用所有迁移
  3. 种子数据

这是我已添加迁移的现有项目,我使用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迁移)?

c# entity-framework ef-migrations

10
推荐指数
1
解决办法
6827
查看次数

标签 统计

c# ×1

ef-migrations ×1

entity-framework ×1