Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Entity Framework Database.SetInitializer funktioniert einfach nicht

Die Datenbank wird nur erstellt, wenn Sie den Kontext tatsächlich verwenden.

Wenn Sie die Seed-Methode in Ihrem Initialisierer wie folgt überschrieben haben:

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

Der Seed-Code wird nur ausgeführt, wenn Sie eine Instanz von MyContext verwenden.

Deshalb funktioniert es, wenn Sie

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

Sie können die Erstellung jederzeit erzwingen, indem Sie Ihren Kontext in der Application_Start()-Methode in Global.asax.cs wie folgt verwenden:

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

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

Oder es wird später erstellt, wenn Sie Ihren Kontext verwenden. Es könnte so ausgesehen haben, als würde es nicht mehr funktionieren, weil Sie Code entfernt haben, der den Kontext beim Anwendungsstart verwenden würde.