My Seed() method is never called in Code First EF 5

code-first, ef-code-first, entity-framework

Solution

So the reason was that I needed to specify my custom Initializer in the config file:

  <entityFramework>
      <contexts>
        <context type="EFTest2.MyContext, EFTest2">
          <databaseInitializer type="EFTest2.Initializers.DbInitializer, EFTest2" />
        </context>
      </contexts>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

After that, my `Seed` method is called.

Problem

My `Seed()` method is never called. It is called when I do an `Update-Database` from the Package Manager Console, but never when I run from code. If I delete my database, all tables are created ( so my migration classes are executed), but my Seed() code is never called. MVC 4, Entity Frame Work 5 Code First. Global.asax: ``` protected void Application_Start() { Database.SetInitializer<MyContext>(new DbInitializer()); } ``` DBInit: ``` internal class DbInitializer : MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> { } ``` DBContext: ``` public partial class MyContext : DbContext { public MyContext() : base("DefaultConnection") { } // public DBSets.... } ``` Configuration: ``` internal sealed class Configuration : DbMigrationsConfiguration<MyContext> { public Configuration() { // The constructor is actually called AutomaticMigrationsEnabled = false; } protected override void Seed(MyContext context) { // My seed code, never called } ``` What could be wrong?

Original source