EntityFramework 7,迁移和ConnectionString

时间:2015-08-12 13:28:54

标签: c# entity-framework-core

我尝试使用asp.net vnext和EF 7.0创建一个简单的网站。对于开发,我使用localDB并且迁移工作正常。然后,我将我的站点部署到Azure,并希望将迁移应用于Azure SQL Server。

有没有办法将迁移应用到生产数据库,或者如何动态更改连接字符串以进行迁移?

每次我申请迁移时,都不想更改连接字符串。

2 个答案:

答案 0 :(得分:5)

有三种方法可以应用迁移。

  1. 以编程方式(过时:请参阅下面的更新)

    context.Database.ApplyMigrations()
    
  2. 从命令行。这实际上是针对管理本地数据库的开发人员,而不是远程服务器。如您所述,针对Azure运行需要您的本地项目包含Azure的连接字符串。

  3. 制作并手动运行脚本。

     $ dnx ef migrations script
    

    (或)

     PM> Script-Migration
    
  4. 这些命令的参数(以及确切的命令)尚未100%设置。没有关于迁移的官方文档。在此期间,this design document显示了计划的迁移命令。

    <强>更新

    API现在是

    context.Database.Migrate()
    

答案 1 :(得分:2)

Startup.cs下面的代码将在启动时应用数据库迁移。

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {

        // other app setup omitted.

        if (env.IsDevelopment())
        {
            // development settings here.
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // production settings here.
            try
            {
                using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
                                             .CreateScope())
                {
                    serviceScope.ServiceProvider.GetService<YourDbContext>()
                                .Database.Migrate();
                }
            }
            catch
            {
                // ignored
            }
        }
    }