我有一个在本地运行的完整 Web 应用程序,我现在正致力于将其投入生产。该应用程序目前位于 Azure 上,并正在查看用于新部署的 git 存储库,效果很好。

但是,应用程序在其 appsettings.json 中有一个连接字符串的连接,如下所示:

"database": {
  "connection": "Data Source=(localdb)\\mssqllocaldb;Initial Catalog=Foo"
},

// In Startup()
var builder = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json")
        .AddEnvironmentVariables();

// In ConfigureServices(...)
services.AddEntityFramework()
        .AddSqlServer()
        .AddDbContext<FooDbContext>(options =>
        {
            options.UseSqlServer(Configuration["database:connection"]);
        });

这对于本地测试来说很好,但现在我准备转向生产并有一些问题(找不到好的文档)。
  • 如何使用 dnx 命令行将更改推送到生产数据库?一切都静态地绑定(bind)到应用程序定义的数据库,因此默认情况下它会始终转到我的本地数据库。
  • 一旦在 Azure 中配置了 DB,我是否只需要在 Azure 上为 Web 应用程序的设置中修改我的连接字符串,就像这样?

  • asp.net - 使用 ASP.NET Core 和 EntityFramework 7 通过 Azure 中的迁移更改更新生产数据库-LMLPHP

    最佳答案

    基本

    你说过你有两个配置。一个用于本地,一个用于生产,每个都有一个连接字符串。在这种情况下,如果你的生产配置被称为 appsettings.production.json 你可以这样做:

    启动()

    var builder = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json")
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    

    配置服务(...)
    services.AddEntityFramework()
        .AddSqlServer()
        .AddDbContext<FooDbContext>(options =>
        {
            options.UseSqlServer(Configuration["database:connection"]);
        });
    

    appsettings.production.json
    {
      "database": {
        "connection": "Server=tcp:yr3d5dswl.database.windows.net,1433;Database=EFMigrationDemo;User ID=mvp2015@yr3d5dswl;Password=3f4g%^BD45bcE;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
      }
    }
    

    命令行
    dotnet ef database update -e Production
    

    这将更新您的生产数据库。

    先进的

    与您的持续集成集成。通过向 project.json 添加 postbuild 脚本,让迁移更新构建时的实时数据库。 Azure 将在每次部署时运行它。
    "scripts": {
      "postbuild": [ "dotnet ef database update" ]
    }
    

    如果要使用环境变量而不是 appsettings.production.json 文件,请查看 Setting the SQL connection string for ASP.NET 5 web app in Azure 。这使您的用户名/密码远离您的 git 存储库。

    引用
  • http://docs.asp.net/en/latest/dnx/projects.html#scripts
  • http://docs.asp.net/en/latest/fundamentals/configuration.html
  • 关于asp.net - 使用 ASP.NET Core 和 EntityFramework 7 通过 Azure 中的迁移更改更新生产数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36453814/

    10-16 10:39