在应用程序启动时使用Entity Framework核心运行数据库迁移

时间:2016-07-09 13:07:22

标签: migration asp.net-core asp.net-core-mvc entity-framework-core

是否可以配置StartUp.csproject.json在应用程序启动时使用Entity Framework Core运行数据库迁移?

现在我有中间件执行此任务,但它似乎对性能产生负面影响,因为正在检查每个请求收到的数据库。

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);
    }
}

1 个答案:

答案 0 :(得分:12)

您可以在Startup.cs的配置方法中执行此操作。最简单的方法是:

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

    // add other services        
}

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

    // configure other services
}