C# dotnet ef不尊重配置
我有两种配置: -发展 -生产 使用以下json设置文件: -appsettings.Production.json -appsettings.Development.json 在每个设置文件中,我都有以下部分: (制作) (发展) 我将这些注入到我的DbContext构造函数中,它工作正常。 我使用以下命令使用迁移系统更新了数据库: dotnet ef数据库更新--上下文MyDbContext--配置开发C# dotnet ef不尊重配置,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我有两种配置: -发展 -生产 使用以下json设置文件: -appsettings.Production.json -appsettings.Development.json 在每个设置文件中,我都有以下部分: (制作) (发展) 我将这些注入到我的DbContext构造函数中,它工作正常。 我使用以下命令使用迁移系统更新了数据库: dotnet ef数据库更新--上下文MyDbContext--配置开发 "Sql" : { "Name": "App_Dev", "Server
"Sql" : {
"Name": "App_Dev",
"Server": "127.0.0.1",
"Port": 0,
"Database": "db_dev",
"Username": "user_dev",
"Password": "secret"
},
它成功了,我的数据库方案也得到了更新
但当我尝试使用以下命令更新生产数据库时:
dotnet ef数据库更新--上下文MyDbContext--配置生产
它告诉我不需要应用任何迁移
我在MyDbContext中转储了连接字符串,并且我可以看到DbContext仍然使用开发配置,即使我键入它应该使用生产设置文件
为什么迁移机制不尊重我的配置?
如何使用appsettings.Production运行dotnet ef --配置
用于构建配置(例如发布
,调试
)
v2.0之前的版本:
使用-e
或-environment
:
PM>dotnet ef数据库更新——上下文MyDbContext-e产品
v2.0+:
在执行命令之前设置ASPNETCORE_环境变量:
PM>$env:ASPNETCORE_ENVIRONMENT='Production'
在我的情况下(Linux环境),使用:
导出ASPNETCORE\u environment=Development
"Sql" : {
"Name": "App_Dev",
"Server": "127.0.0.1",
"Port": 0,
"Database": "db_dev",
"Username": "user_dev",
"Password": "secret"
},
更改数据库更新命令使用的环境我将使用env var来提供连接字符串,而不是appsettings.Production.json。如果使用配置文件,那么在执行dotnet cli命令之前,您必须设置环境名称,如下所述(--configuration!=environment name)。Set ASPNETCORE_ENVIRONMENT=production我以前尝试过使用您的解决方案,但没有结果。这是因为,当我尝试应用迁移时,构建过程只使用生产设置创建生产目录。似乎您将调试/生产构建配置与不同的环境混为一谈。第一个是“如何编译”,但环境是关于设置的。这意味着,您可以创建一个生产构建并使用开发设置运行它,调试构建并使用生产设置运行它。事实上,ASP.NET核心在技术上根本没有利用Visual Studio中的配置。与在旧版本的ASP.NET中编译特定配置环境不同,配置环境是通过设置指定的,通常是通过环境变量ASPNETCORE_environment指定的。在.NET core 2.1中没有-e或--environment开关。仅限--configuration看起来像是针对v2+删除的(为什么??);最新答案