I'm using the DbMigrator
class to get a list of pending migrations. For some reason it returns no items even though there are pending migrations. Am i missing a step?
var configuration = new Migrations.Configuration();
configuration.TargetDatabase = new DbConnectionInfo("MyDatabase");
var migrator = new DbMigrator(configuration);
var migs = migrator.GetPendingMigrations().ToList();
Console.WriteLine(migrator.GetPendingMigrations().ToString());
I thought it might be the connection string but what's interesting is that migrator.GetDatabaseMigrations()
returns the correct list of migrations already applied to the db.
I have same problem too, and after a week of research and read .Net source finally find solution. If you working in a different assembly, you mus set configuration assembly information completely like this:
This code is in
DbContextBase
class, AllDbContext
in my project inheritDbContextBase
.DbContextBase
is abstract and it is located in another assembly. When calledUpdateDatabaseToLatestVersion
from each DbContext,var type = GetType();
return inherited DbContext type.The same happened to me and the reason was that I was working in a different assembly. In that case, you need to specify the assembly and namespace that contains your migrations: