I am out of ideas. Googled, but still can't understand why my database initializer is failing. I have a class MyDbContext and a class MyDbContextInitializer. In Application_Start (using MVC4) I do this:
// Initialize database Database.SetInitializer(new MyDbContextInitializer()); MyDbContext context = new MyDbContext(); context.Database.Initialize(true);
I worked fine in EF 5, but when I switch to EF6, my Seed () in the MyDbContextInitializer class is never called. Why?
MyDbContext:
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(); } }
What happened? Thanks.
source share