【问题标题】:How to create EF migrations with ConnectionStrings on Azure's ConfigurationManager.ConnectionStrings?如何在 Azure 的 ConfigurationManager.ConnectionStrings 上使用 ConnectionStrings 创建 EF 迁移?
【发布时间】:2021-01-10 18:51:34
【问题描述】:

我们最近从dev 的本地服务器和prod 的云上私有服务器迁移到 Azure,我们有不同的插槽 (dev/staging/prod) 和 SQL Azure也是。

在我需要创建新的迁移之前,一切都运行良好。我们使用的是 Code First EF6,因此,为了创建迁移,我在控制台包管理员窗口中键入 add-migration Whatever099BriefDescription 命令。

我立即得到一个NullReferenceException 指的是连接字符串。我们有一个 ConnectionStringFactory 类,我们曾经有一个 #if DEBUG# 返回从 Web.Config 抓取的正确连接字符串。

public static class ConnectionStringFactory
{
    public static string GetConnectionString()
    {
        //USED JUST FOR CREATING MIGRATIONS
        //#if DEBUG
        //            return @"Data Source = SQLSERVER\LANSERVER; Initial Catalog = Project; user id = Project; password = asdf; MultipleActiveResultSets = true";
        //#endif

        var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Project"].ConnectionString;
        return connectionString;
    }
}

由于我们实际使用的是 Azure 的配置连接字符串(在 Azure 门户面板上),我们的 web.config 没有定义连接字符串。所以当然NullReferenceException 是完全有道理的,因为它试图从一个无法抓取的地方获取该字符串。

我终于可以再次使用 #if DEBUG# 注释创建迁移,提供硬编码的连接字符串,当然之后删除它。

这似乎是一种“奇怪”的行为,或者至少不是最佳行为。您能否分享有关如何创建 EF 迁移而不需要临时硬编码连接字符串的任何建议,以便可以“以某种方式”实现从 Azure 获取它?

【问题讨论】:

    标签: c# asp.net-mvc azure entity-framework azure-sql-database


    【解决方案1】:

    关于这个问题,我认为你可以从 Azure 下载连接字符串,将连接字符串设置为环境变量,然后运行命令add-migration。关于如何从Azure获取连接字符串,请参考here

    【讨论】:

      猜你喜欢
      • 2020-02-27
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      相关资源
      最近更新 更多