【问题标题】:Package Manager Console fails to read ConnectionStrings when running Add-Migration运行 Add-Migration 时,程序包管理器控制台无法读取 ConnectionStrings
【发布时间】:2019-08-07 14:36:25
【问题描述】:

在尝试使用 ConfigurationManager.ConnectionStrings["TestingDatabase"].ConnectionString 访问 connectionString 键时,在 Visual Studio 2019 内的包管理器控制台上运行 Add-Migration 会引发 NullReferenceException

这是 Windows 上的空白项目。我创建了一个 Windows 窗体应用程序 (.NET Core) 并安装了基本要求 - EntityFrameworkCore、EntityFrameworkCore 工具和 System.Configuration.ConfigurationManager。 我手动创建了一个 App.config 文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="TestingDatabase" connectionString="myConnectionString"/>
  </connectionStrings>
</configuration>

在 Debug (F5) 中运行代码,命令 Console.WriteLine(ConfigurationManager.ConnectionStrings["TestingDatabase"].ConnectionString); 给了我myConnectionString,这是预期的结果。

包管理器控制台中的相同命令(在执行Add-Migration InitialMigration 期间)会引发System.NullReferenceException。 该解决方案包含一个项目,该项目设置为启动项目,也是包管理器控制台中的默认项目。

包管理器控制台似乎没有正确读取我的 App.config,尽管似乎没有任何明显的配置错误,因为运行该项目通常工作正常。 我不知道可能出了什么问题,所以如果需要更多信息,请告诉我。

编辑:这个问题.Net Standard 2.0 ConfigurationManager Doesn't Read Connection Strings 是昨天发布的,似乎与我的问题非常相似。

【问题讨论】:

  • 数据库本身是否已经创建?试试这个命令:dotnet ef database update
  • 问题发生在建立数据库连接之前。如果我使用原始字符串 (optionsBuilder.UseNpgsql("myConnectionString");),则建立连接并且迁移和数据库更新都有效。当我使用 ConfigurationManager 时会出现问题 (optionsBuilder.UseNpgsql(ConfigurationManager.ConnectionStrings["TestingDatabase"].ConnectionString);)
  • 您使用的是哪个版本的 .net-core?
  • 我使用的是 .NET Core 3.0。我也尝试使用 2.2 版,但没有成功。这个问题似乎与我的问题有关,但我不明白解决方案。将“ConfigurationManager 添加到 .Net Framework 应用程序”是什么意思?就我而言,ConfigurationManager 已经是 Dependencies -> NuGet -> System.Configuration.ConfigurationManager 的依赖项。

标签: visual-studio .net-core entity-framework-core connection-string


【解决方案1】:

已通过解决方法解决。我没有使用 App.config,而是创建了一个 settings.json 文件并使用 Config.NET 库来读取它。确保将 settings.json 复制到输出目录。

这并没有解决包管理器控制台无法访问 App.config 文件的问题,但至少可以防止我将字符串硬编码为代码。

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 2012-12-19
    • 2019-06-30
    • 2014-07-24
    • 2018-12-08
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多