Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Entity Framework Database.SetInitializer semplicemente non funziona

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.