Entity framework EF代码先-删除后种子设定,然后创建数据库
我试图强制EF代码首先重新初始化数据库。我的第一个想法是:Entity framework EF代码先-删除后种子设定,然后创建数据库,entity-framework,code-first,Entity Framework,Code First,我试图强制EF代码首先重新初始化数据库。我的第一个想法是: dbContext.Database.Delete(); dbContext.Database.Create(); 这将创建一个新数据库,但忽略种子策略(使用database.SetInitializer设置)。我在应用程序启动方法中执行上述操作。有什么想法吗 我也尝试过: dbContext.Database.Initialize(true); 一个选项是创建您自己的数据库初始值设定项,该初始值设定项继承自DropCrea
dbContext.Database.Delete();
dbContext.Database.Create();
这将创建一个新数据库,但忽略种子策略(使用database.SetInitializer设置)。我在应用程序启动方法中执行上述操作。有什么想法吗
我也尝试过:
dbContext.Database.Initialize(true);
一个选项是创建您自己的数据库初始值设定项,该初始值设定项继承自DropCreateDatabaseAlways 这方面的一个例子是
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; }
}
公共类MyInitializer:DropCreateDatabaseAlways
{
受保护的覆盖无效种子(EmployeeContext上下文)
{
Add(newemployee(){FirstName=“Marcy”});
种子(上下文);
}
}
公共类EmployeeContext:DbContext
{
静态EmployeeContext()
{
Database.SetInitializer(新的MyInitializer());//使用我自己的初始值设定项
}
公共IDbSet雇员{get;set;}
}
以下是我为克服这一问题所做的:
你能发布你的Database.SetInitializer代码吗?是的。我已经做过了。但是我不能强迫它运行(不改变模型)
Database.SetInitializer(new CustomInitializer()); //CustomInitializer contains the overriding Seed method
using (var context = new CustomDatabaseContext())
{
context.Database.Initialize(force: true);
}