如何更改更新数据库 ef 迁移的连接字符串?

2024-04-26

我正在尝试运行 Update-Database,并且想指定连接字符串,但 CLI 正在查看错误的字符串。我的 appsettings.json 文件中有两个连接字符串:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "LocalWindows": "data source=.\\SQLEXPRESS;initial catalog=Intranet;persist security info=True;integrated security=true;",
    "AzureDevelopment": "Server=tcp:en..."
  }
}

当我运行 Update-Database 时,AzureDevelopment 始终是它使用的密钥。因此,如果我将 LocalWindows 连接字符串复制到 AzureDevelopment 的值,它将更新正确的数据库。此外,如果我删除 AzureDevelopment 但保留 LocalWindows,如下所示:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "LocalWindows": "data source=.\\SQLEXPRESS;initial catalog=Intranet;persist security info=True;integrated security=true;"
  }
}

I get:

Value cannot be null.
Parameter name: connectionString

因此,似乎在某个时刻,CLI 选择使用 AzureDevelopment 字符串,我无法再更改密钥或提供连接字符串作为参数。

我的问题是迁移 CLI 如何知道要使用什么连接字符串?它是通过启动设置上的一些反射魔法来检测字符串还是什么?我在网上看到的只是如何在运行Update-Database时指定项目。 CLI 曾经有 -ConnectionString 和 -ConnectionStringName 参数,但这些参数不再可用。


我所要做的就是在 PowerShell 中执行以下操作:

$env:ASPNETCORE_ENVIRONMENT='LocalWindows' dotnet ef database update

or

$env:ASPNETCORE_ENVIRONMENT='LocalWindows' Update-Database

打开详细信息Update-Database -verbose还向您显示输出中的环境,以确保它达到正确的环境。

什么不起作用:

  • 在 Windows 中设置全局 ASPNETCORE_ENVIRONMENT 环境变量
  • 在“项目”->“设置”->“调试”屏幕中设置 ASPNETCORE_ENVIRONMENT 环境变量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改更新数据库 ef 迁移的连接字符串? 的相关文章

随机推荐