如何更改更新数据库 ef 迁移的连接字符串?
How do I change connection string for Update-Database ef migrations?
我正在尝试 运行 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..."
}
}
当我运行 更新数据库时,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;"
}
}
我得到:
Value cannot be null.
Parameter name: connectionString
所以似乎在某些时候,CLI 选择使用 AzureDevelopment 字符串,我无法再更改密钥或提供连接字符串作为参数。
我的问题是迁移 CLI 如何知道要使用什么连接字符串?它是通过启动设置上的一些反射魔术来检测字符串还是什么?我在网上看到的都是运行ning Update-Database时如何指定项目。 CLI 曾经有 -ConnectionString 和 -ConnectionStringName 参数,但这些参数不再可用。
我所要做的就是在 PowerShell 中执行以下操作:
$env:ASPNETCORE_ENVIRONMENT='LocalWindows'
dotnet ef database update
或
$env:ASPNETCORE_ENVIRONMENT='LocalWindows'
Update-Database
使用 Update-Database -verbose
打开详细信息还会在输出中向您显示环境,以确保它是正确的。
什么不起作用:
- 在 Windows
中设置全局 ASPNETCORE_ENVIRONMENT 环境变量
- 在项目->设置->调试屏幕中设置ASPNETCORE_ENVIRONMENT环境变量
在 EF Core 5.0 中,可以像这样指定连接字符串:
dotnet ef database update --connection "<connection string>"
我正在尝试 运行 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..."
}
}
当我运行 更新数据库时,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;"
}
}
我得到:
Value cannot be null.
Parameter name: connectionString
所以似乎在某些时候,CLI 选择使用 AzureDevelopment 字符串,我无法再更改密钥或提供连接字符串作为参数。
我的问题是迁移 CLI 如何知道要使用什么连接字符串?它是通过启动设置上的一些反射魔术来检测字符串还是什么?我在网上看到的都是运行ning Update-Database时如何指定项目。 CLI 曾经有 -ConnectionString 和 -ConnectionStringName 参数,但这些参数不再可用。
我所要做的就是在 PowerShell 中执行以下操作:
$env:ASPNETCORE_ENVIRONMENT='LocalWindows'
dotnet ef database update
或
$env:ASPNETCORE_ENVIRONMENT='LocalWindows'
Update-Database
使用 Update-Database -verbose
打开详细信息还会在输出中向您显示环境,以确保它是正确的。
什么不起作用:
- 在 Windows 中设置全局 ASPNETCORE_ENVIRONMENT 环境变量
- 在项目->设置->调试屏幕中设置ASPNETCORE_ENVIRONMENT环境变量
在 EF Core 5.0 中,可以像这样指定连接字符串:
dotnet ef database update --connection "<connection string>"