In previous versions of Entity Framework code-first migrations could be controlled programmatically with the DbMigrator class (e.g. check for and apply available migrations). Does that class still exist somewhere or is there a functional replacement? I found a post on an early RC version that indicated a substitute but that too seems to be missing from Core 1.0. I can control my migrations through CLI without issue but I think an in-code solution for custom tooling scenarios is going to be needed.
1 Answer
The functional replacement can be found in a few places, primarily in the API found in the Microsoft.EntityFrameworkCore.Migrations namespace.
Some places to look:
IHistoryRepository.GetAppliedMigrations()IMigrator.Migrate(string targetMigration)(which is the same as callingDbContext.Database.Migrate())IMigrationAssemblyto find current migrations
With the exception of IMigrator.Migrate, using these API usually means pulling the service out of internal EF Core's service container. This is done by calling .GetService<TService>() on your dbcontext.
Example:
var migrator = context.GetService<IMigrator>().Migrate();
2 Comments
Dane Vinson
The GetService<T> method is not available to my context. I'm assuming it's an extension method? What dependent package and namespace contains that method?
natemcmaster
It's in the
Microsoft.EntityFrameworkCore.Infrastructure namespace. You don't need an extra package.