dotnet ef 不尊重配置

bie*_*000 6 c# entity-framework-core asp.net-core

我有两种配置: - 开发 - 生产

具有以下 json 设置文件: - appsettings.Production.json - appsettings.Development.json

在每个设置文件中,我都有以下部分:

(生产)

"Sql" : {
    "Name": "App_Prod",
    "Server": "127.0.0.1",
    "Port": 0,
    "Database": "db_prod",
    "Username": "user_prod",
    "Password": "secret"
   },
Run Code Online (Sandbox Code Playgroud)

(发展)

"Sql" : {
    "Name": "App_Dev",
    "Server": "127.0.0.1",
    "Port": 0,
    "Database": "db_dev",
    "Username": "user_dev",
    "Password": "secret"
   },
Run Code Online (Sandbox Code Playgroud)

我将它们注入到我的 DbContext 构造函数中,并且它工作正常。我使用以下命令使用迁移系统更新了我的数据库:

dotnet ef数据库更新--context MyDbContext--配置开发

它有效,并且我的数据库方案已更新。

但是当我尝试使用以下命令更新生产数据库时:

dotnet ef 数据库更新 --context MyDbContext--configuration Production

它向我提供了无需应用任何迁移的信息。

我将连接字符串转储到 MyDbContext 中,我可以看到 DbContext 仍然使用开发配置,即使我输入它应该使用生产设置文件。

为什么迁移机制不尊重我的配置?如何使用 appsettings.Production 运行 dotnet ef?

Moh*_*oho 6

--configuration用于构建配置(例如Release, Debug

v2.0 之前的版本:

使用-e--environment

PM> dotnet ef 数据库更新 --context MyDbContext -e Production

v2.0+:

在执行命令之前设置 ASPNETCORE_ENVIRONMENT 环境变量:

PM> $env:ASPNETCORE_ENVIRONMENT='生产'


bie*_*000 2

就我而言(Linux 环境)使用:

导出 ASPNETCORE_ENVVIRONMENT=开发

更改数据库更新命令使用的环境