Baza danych zostanie utworzona tylko wtedy, gdy faktycznie użyjesz kontekstu.
Jeśli zastąpiłeś metodę Seed w inicjatorze w następujący sposób:
protected override void Seed(MyContext context){...}
Kod źródłowy zostanie uruchomiony tylko wtedy, gdy użyjesz instancji MyContext.
Dlatego działa, gdy używasz
var ctx = new MyContext();
ctx.Database.Initialize(true);
Zawsze możesz zmusić go do utworzenia, używając swojego kontekstu w metodzie Application_Start() w Global.asax.cs, takich jak:
System.Data.Entity.Database.SetInitializer(new MyInitializer());
MyContext db = new MyContext();
db.Database.Initialize(true);
//or even something like db.Users.Count();
Lub zostanie utworzony później, gdy użyjesz swojego kontekstu. Mogło wyglądać tak, jakby przestało działać, ponieważ usunąłeś kod, który używałby kontekstu podczas uruchamiania aplikacji.