EF代码优先 - 删除后再创建数据库

Ste*_*lis 5 entity-framework code-first

我正在尝试强制EF Code First重新初始化数据库.我的第一个想法是打电话:

dbContext.Database.Delete();    
dbContext.Database.Create();
Run Code Online (Sandbox Code Playgroud)

这将创建一个新数据库,但会忽略播种策略(使用Database.SetInitializer <>设置).我正在Application_Start方法中执行上述操作.有任何想法吗?

我也尝试过:

dbContext.Database.Initialize(true);
Run Code Online (Sandbox Code Playgroud)

Kyl*_*ery 0

一种选择是创建您自己的从 DropCreateDatabaseAlways 继承的 DatabaseInitializer。

一个例子是。

public class MyInitializer : DropCreateDatabaseAlways<EmployeeContext>
{
    protected override void Seed(EmployeeContext context)
    {
        context.Employees.Add(new Employee() {FirstName = "Marcy"});
        base.Seed(context);
    }
}

public class EmployeeContext : DbContext
{
    static EmployeeContext()
    {
        Database.SetInitializer(new MyInitializer()); // using my own initializer
    }

    public IDbSet<Employee> Employees { get; set; }
}
Run Code Online (Sandbox Code Playgroud)