我没主意了。谷歌搜索,但仍然无法弄清楚为什么我的数据库初始化程序没有触发。我有 MyDbContext 类和 MyDbContextInitializer 类。在 Application_Start(使用 MVC4)中,我这样做:
// Initialize database
Database.SetInitializer(new MyDbContextInitializer());
MyDbContext context = new MyDbContext();
context.Database.Initialize(true);
我在 EF 5 中工作正常,但是当我切换到 EF6 时,MyDbContextInitializer 类中的 Seed() 永远不会被调用。为什么?
我的数据库上下文:
public class MyDbContext : DbContext
{
public MyDbContext() : base("Name=MyDbContext")
{
}
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfig());
modelBuilder.Configurations.Add(new RoleConfig());
}
}
MyDbContextInitializer:
public class MyDbContextInitializer : DropCreateDatabaseAlways<MyDbContext>
{
protected override void Seed(MyDbContext context)
{
var roles = new List<Role>
{
new Role {Name = "Administrator"},
new Role {Name = "User"}
};
roles.ForEach(r => context.Roles.Add(r));
context.SaveChanges();
}
}
怎么了?谢谢。