Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Entity Framework Database.SetInitializer simplesmente não está funcionando


O banco de dados só será criado quando você realmente usar o contexto.

Se você substituiu o método Seed em seu inicializador da seguinte maneira:
protected override void Seed(MyContext context){...}

O código Seed só será executado quando você usar uma instância de MyContext.

É por isso que funciona quando você usa
var ctx = new MyContext();
ctx.Database.Initialize(true);

Você sempre pode forçá-lo a criar usando seu contexto no método Application_Start() em Global.asax.cs como:
        System.Data.Entity.Database.SetInitializer(new MyInitializer());

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

Ou ele será criado mais tarde quando você usar seu contexto. Pode parecer que parou de funcionar porque você removeu algum código que usaria o contexto na inicialização do aplicativo.