Sto riscontrando un problema nel chiamare il metodo Seed sul mio inizializzatore del database personalizzato. Sto utilizzando EF 5.0 e hanno il seguente codice: esistonoDropCreateDatabaseAlways Seed non chiamato
public static class MyDatabase
{
public static void Initialize()
{
Database.SetInitializer(new MyInitializer());
}
}
public class MyInitializer : DropCreateDatabaseAlways<MyContext>
{
protected override void Seed(MyContext context)
{
base.Seed(context);
context.Roles.Add(new Role
{
ID = 1,
Name = "User",
});
context.Roles.Add(new Role
{
ID = 2,
Name = "Admin",
});
context.SaveChanges();
}
}
Queste due classi in una libreria di classe separata dalla app MVC. Nel Global.asax
, chiamo il metodo Initialize()
:
MyDatabase.Initialize();
Il database viene creato bene, è solo il metodo Seed(MyContext context)
non è chiamato e nessun dato viene messo nel mio database.
Per curiosità, cosa succede se si mette la base. Alla fine del metodo? – IronMan84
La stessa cosa, non viene chiamata. Metto un breakpoint sul contesto.Roles.Add e non si rompe mai. Avrebbe qualcosa a che fare con l'inizializzatore in una diversa libreria di classi e non nel progetto web stesso? Pensavo di averlo fatto in questo modo prima, ma non ricordo in modo specifico. –
Potrebbe. Potrebbe anche essere che hai messo tutto in una classe statica. – IronMan84