【问题标题】:How to handle EF code-first migrations from my local machine when deploying to Azure?部署到 Azure 时如何从本地计算机处理 EF 代码优先迁移?
【发布时间】:2013-10-13 01:00:35
【问题描述】:

我终于想出了如何让 web.config 转换工作,以便在本地我有一个连接(我的默认 web.config 中的那个),然后当我发布到 Azure 时,应用了“调试”转换使用了 Azure-SQL 数据库连接字符串。

这么多工作,但现在我遇到了数据库迁移问题。

在我的配置中:

protected override void Seed(MG.Context.MentorContext context)
    {
        System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<MentorContext, Configuration>());

        if (!WebSecurity.Initialized)
            WebSecurity.InitializeDatabaseConnection("DefaultConnection",
                 "User", "UserId", "Username", autoCreateTables: true);
    }

现在,当我在本地运行并想要更新本地数据库时,我打开包管理器控制台并输入“update-database”,一切正常。

虽然有时我想更新远程 Azure-SQL 数据库 - 所以过去我已经这样做了:

Update-Database -ConnectionString "azure connection string here" -verbose

当我手动更新我的本地 web.config 时它正在工作。既然我正在使用上述转换,即使我指定了一个 connectionString,我的 Seed 方法中的 DefaultConnection 也会解析为未转换的连接字符串(我的本地数据库),因此成员资格表永远不会在 Azure 数据库上创建。

这可以通过手动更新默认 web.config 来解决,但这违背了使用这些转换的目的。

如何应用这些转换,以便我的 EF 迁移的 Seed 方法使用 Azure 连接字符串 - 或者 - 我如何告诉 update-database 使用 azure 连接字符串? p>

如果可以的话,我会尽量避免手动交换连接字符串。

【问题讨论】:

    标签: entity-framework ef-code-first connection-string azure-sql-database


    【解决方案1】:

    您提到了 Web.config 并“发布”到 Azure;你在使用 Azure 网站吗?

    如果是这样,请查看this article。简而言之,如果您在 Azure 网站的 K/V 存储上配置了与您的连接字符串同名的连接字符串,那么您在 Azure 上设置的值将自动优先:

    连接字符串的工作方式类似 要求。记得之前有一个连接字符串 称为“example-config_db”,已与网站相关联。 如果网站的 web.config 文件引用了相同的连接字符串 在配置部分,然后是 Windows Azure 网站将在运行时自动更新连接字符串 使用门户中显示的值。

    这应该确保您的Seed 方法尝试连接到正确的数据库。

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 2013-11-05
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多