Il database verrà creato solo quando si utilizza effettivamente il contesto.
Se hai sovrascritto il metodo Seed nell'inizializzatore come segue:
protected override void Seed(MyContext context){...}
Il codice Seed verrà eseguito solo quando utilizzi un'istanza di MyContext.
Ecco perché funziona quando usi
var ctx = new MyContext();
ctx.Database.Initialize(true);
Puoi sempre forzarne la creazione usando il tuo contesto nel metodo Application_Start() in Global.asax.cs come:
System.Data.Entity.Database.SetInitializer(new MyInitializer());
MyContext db = new MyContext();
db.Database.Initialize(true);
//or even something like db.Users.Count();
Oppure verrà creato in seguito quando utilizzerai il tuo contesto. Potrebbe sembrare che avesse smesso di funzionare perché hai rimosso del codice che avrebbe utilizzato il contesto all'avvio dell'applicazione.