In Entity Framework 6, I can not start the database initializer?

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.

+4
source share
1 answer

What does your connection string look like? If your connection string is configured in a certain way, EF thinks that you are using the database first and not starting the initialization methods.

0
source

All Articles