Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Entity Framework Database.SetInitializer ne fonctionne tout simplement pas

La base de données ne sera créée que lorsque vous utiliserez réellement le contexte.

Si vous avez remplacé la méthode Seed dans votre initialiseur comme suit :

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

Le code Seed ne s'exécutera que lorsque vous utiliserez une instance de MyContext.

C'est pourquoi cela fonctionne lorsque vous utilisez

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

Vous pouvez toujours le forcer à créer en utilisant votre contexte dans la méthode Application_Start() dans Global.asax.cs comme :

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

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

Ou il sera créé plus tard lorsque vous utiliserez votre contexte. Il aurait pu sembler qu'il avait cessé de fonctionner parce que vous avez supprimé du code qui utiliserait le contexte au démarrage de l'application.