Il metodo Seed()
non viene mai chiamato. Viene chiamato quando faccio un Update-Database
dalla Console Gestione pacchetti, ma mai quando corro dal codice. Se cancello il mio database, tutte le tabelle sono create (quindi le mie classi di migrazione sono eseguite), ma il mio codice Seed() non viene mai chiamato. MVC 4, Entity Frame Work 5 Code First.Il metodo My Seed() non viene mai chiamato in Code First EF 5
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....
}
Configurazione:
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
}
Cosa potrebbe esserci di sbagliato?
Sei sicuro di fare qualcosa con il contesto? DbContext è pigro; non fa molto di nulla finché non lo usi, ad esempio, eseguendo una query o aggiungendo un oggetto. L'inizializzatore verrà eseguito solo quando il contesto viene utilizzato per la prima volta. È possibile provocare l'inizializzazione chiamando context.Database.Initialize (false); –
Ho lo stesso problema, anche se non ho la stessa configurazione (mi affido all'esperienza fuori dalla scatola). Ho provato a eseguire context.database.Inizializza (false) con vero e falso, ma nessuno dei due ha causato l'esecuzione del metodo seed. – Noel
@ArthurVickers Sì, ne sono sicuro. –