c# - Entity Framework context.database.create() still goes through my Class : DbMigration -


good day! ideas on why context.database.create() still goes through classes : dbmigration. if dont drop database, migration works fine. if drop database , start new one. go through migration list , try update , return error dbo."tablename" not found.

here code

    public class dmsdbcontextinitializer : dmsdbcontextinitializerbase, idatabaseinitializer<dmsdbcontext> {     public void initializedatabase(dmsdbcontext context)     {         var dbname = context.database.connection.database;          if (context.database.exists())         {              var migrator = new dbmigrator(new migrationconfiguration                 {                     automaticmigrationsenabled = false                 });              //get pending migrations             var pendingmigrations = migrator.getpendingmigrations().select(x => new             {                 numericid = convert.toint64(x.split(new[] { '_' })[0]),                 migrationid = x             }).tolist();              //get last migration entry             var latestmigrationhistory = context.getmigrationhistories().orderbydescending(x => x.migrationid).firstordefault();              if (latestmigrationhistory != null)             {                 var latestmigrationid = convert.toint64(latestmigrationhistory.migrationid.split(new[] { '_' })[0]);                  var prevmigrations = pendingmigrations.where(x => x.numericid < latestmigrationid);                  //exclude prev migration in update , insert fake history table record each                 foreach (var prevmigration in prevmigrations)                 {                     context.database.executesqlcommand(transactionalbehavior.donotensuretransaction,                         @"insert __migrationhistory (migrationid,contextkey,model, productversion) values (@p0,@p1,@p2,@p3)",                         prevmigration.migrationid,                         migrator.configuration.contextkey,                         latestmigrationhistory.model,                         latestmigrationhistory.productversion                         );                 }             }              //execute valid pending migrations             if (migrator.getpendingmigrations().any())                 migrator.update();              /*some seed , update codes*/             context.savechanges();         }         else         {             //create db             context.database.create();             configurefiletablesupport(context, dbname);             configureimagefiletablesupport(context, dbname);              //initial data             seed(context);         } 

in context.database.create(), if press f11, go through class : dbmigration. cant seem find @ fault here.

here dbcontext

public class dmsdbcontext : basedbcontext, idmsdbcontext {     public dmsdbcontext()         : base("dmsctx")     {      }     public dmsdbcontext(string connectionstring)         : base(connectionstring)     {     }      public idbset<filemetadata> filemetadata { get; set; }      public idbset<filemetadatacontent> filemetadatacontents { get; set; }     public idbset<sharedfile> sharedfiles { get; set; }     public idbset<auditfilemetadata> auditfilemetadata { get; set; }      public itransactionscope createtransactionscope()     {         return new eftransactionscope(database.begintransaction());     }      public ienumerable<t> sqlquery<t>(string sql, params object[] parameters)     {         return database.sqlquery<t>(sql, parameters);     }      public int executesqlcommand(string sql, params object[] parameters)     {         return database.executesqlcommand(sql, parameters);     }      public string databasename     {         { return database.connection.database; }     }      /// <summary>     /// query migration history table     /// </summary>     /// <returns></returns>     public ilist<migrationhistory> getmigrationhistories()     {         return database.sqlquery<migrationhistory>("select * __migrationhistory").tolist();     } }  public interface idmsdbcontext {     idbset<filemetadata> filemetadata { get; set; }     idbset<filemetadatacontent> filemetadatacontents { get; set; }     idbset<sharedfile> sharedfiles { get; set; }     idbset<auditfilemetadata> auditfilemetadata { get; set; }     int savechanges();     dbcontextconfiguration configuration { get; }     itransactionscope createtransactionscope();     ienumerable<t> sqlquery<t>(string sql, params object[] parameters);     int executesqlcommand(string sql, params object[] parameters);     string databasename { get; } } 

im not sure why implementing "exact"/close functionality of how ef migrations works yourself?

isn't after createdatabaseifnotexists db initialization strategy? or me not reading question enough?

public class schooldbcontext: dbcontext  {        public schooldbcontext(): base("schooldbconnectionstring")      {         database.setinitializer<schooldbcontext>(new createdatabaseifnotexists<schooldbcontext>());          //database.setinitializer<schooldbcontext>(new dropcreatedatabaseifmodelchanges<schooldbcontext>());         //database.setinitializer<schooldbcontext>(new dropcreatedatabasealways<schooldbcontext>());         //database.setinitializer<schooldbcontext>(new schooldbinitializer());     }     public dbset<student> students { get; set; }     public dbset<standard> standards { get; set; } } 

read more: ef db initialization strategies more migrations: ef code first migrations