【问题标题】:Run database migrations using Entity Framework core on application start在应用程序启动时使用 Entity Framework 核心运行数据库迁移
【发布时间】:2016-11-11 22:28:32
【问题描述】:

是否可以配置 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);
    }
}

【问题讨论】:

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


    【解决方案1】:

    您可以在 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
    }
    

    【讨论】:

    • 最后,从 EF 6 真正改进的东西
    • 它会覆盖生产服务器上的表吗?
    • 对于 EF 核心,如果数据库迁移项目是作为单独的项目创建的,使用 MigrationsAssembly 选项配置 dbcontext 将使其工作。 services.AddDbContext&lt;SampleDbContext&gt;(opt =&gt; opt.UseSqlServer(dbConnectionString, x =&gt; x.MigrationsAssembly("SampleApi.DbMigration")));
    猜你喜欢
    • 2017-12-24
    • 2011-02-21
    • 2017-04-26
    • 1970-01-01
    • 2011-01-10
    • 2012-07-04
    • 1970-01-01
    • 2014-01-29
    • 2019-01-18
    相关资源
    最近更新 更多