Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run database migrations using Entity Framework core on application start

Is it possible to configure StartUp.cs or project.json to run database migrations using Entity Framework Core on application start?

Now I have middleware that do this task, but it seems to make negative influence on performance because database is being checked each request received.

public class EntityFrameworkUpdateDatabaseMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ApplicationDbContext _dbContext;

    public EntityFrameworkUpdateDatabaseMiddleware(RequestDelegate next, ApplicationDbContext dbContext)
    {
        _next = next;
        _dbContext = dbContext;
    }

    public async Task Invoke(HttpContext context)
    {
        await _dbContext.Database.MigrateAsync();
        await _next.Invoke(context);
    }
}
like image 865
malonowa Avatar asked Jul 09 '16 13:07

malonowa


1 Answers

You can do this in the config methods in your Startup.cs. The simplest way is like this:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>();

    // add other services        
}

public void Configure(IApplicationBuilder app, ApplicationDbContext db)
{
    db.Database.Migrate();

    // configure other services
}
like image 194
Brad Avatar answered Oct 13 '22 12:10

Brad