sql >> Databasteknik >  >> RDS >> Sqlserver

Entity Framework Database.SetInitializer fungerar helt enkelt inte

Databasen kommer bara att skapas när du faktiskt använder sammanhanget.

Om du har åsidosatt Seed-metoden i din initializer enligt följande:

protected override void Seed(MyContext context){...}

Seed-koden kommer bara att köras när du använder en instans av MyContext.

Det är därför det fungerar när du använder

var ctx = new MyContext();
ctx.Database.Initialize(true);

Du kan alltid tvinga den att skapa genom att använda ditt sammanhang i Application_Start()-metoden i Global.asax.cs som:

        System.Data.Entity.Database.SetInitializer(new MyInitializer());

        MyContext db = new MyContext();
        db.Database.Initialize(true);
        //or even something like db.Users.Count();

Eller så skapas den senare när du använder ditt sammanhang. Det kan ha sett ut som om det hade slutat fungera eftersom du tog bort någon kod som skulle använda sammanhanget vid start av programmet.



  1. MySQL Infoga rad, på duplikat:lägg till suffix och infoga igen

  2. 'MSDAORA.1'-leverantören är inte registrerad på den lokala maskinen

  3. Mysql lösenordshashningsmetod gammal vs ny

  4. Gruppera efter liknande sträng