我使用Visual Studio通过一定的迁移来更新所有环境。使用下面的命令,它工作正常。
update-database -Migration initMigrationProduct -c ProductContext -Environment Production
在ef core 2.0中,此命令已更改,参数-Environment已删除。在文档中说。
“在2.0中,您可以改用ASPNETCORE_ENVIRONMENT环境变量。”
https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/dotnet
我现在已经尝试了各种方法,但是当我在update-database
ef core 2.0中运行时,它不使用ASPNETCORE_ENVIRONMENT
变量。我想在注册表中设置应用程序属性。
请让我知道我需要做些什么才能使它与更新不同的环境一起工作?
如果我使用不同的启动设置启动应用程序,则可以正常运行,但不能使用程序包管理器控制台。
在Visual Studio中使用包管理器对我来说是死胡同。解决方案是:
在解决方案中的启动程序项目的.csproj中添加以下内容:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
打开命令工具(cmd),然后找到与.csproj相同的文件夹,用于启动项目(默认项目)。
按照Anton Toshik的建议运行命令 set ASPNETCORE_ENVIRONMENT=Production
4.然后运行命令dotnet ef database update initMigrationProduct -c ProductContext
,现在它可以工作了。
备注:在此命令中database
,update
自较早版本以来已更改位置。而且没有用于迁移的参数/代码。在澄清之后,文档会进行更多说明:https :
//docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/dotnet
当我将所有内容升级到核心2.0时,我也遇到了同样的问题。@bricelam响应对我有用(即使我更喜欢旧方法),我在这里发布了相同的问题和响应: github.com/aspnet/EntityFrameworkCore/issues/9664
尝试在“开发”环境中执行此操作。我遇到了同样的问题,但无法与上述解决方案配合使用。我有appsettings.json和appsettings.development.json(每个都有不同的数据库连接字符串)。在cmd或程序包管理器中,以上方法均无效。在应用程序本身的两个环境中均可正确拾取配置。希望有任何见识!
发生的事情是,ef从设置ASPNETCORE_ENVIRONMENT中读取了环境。在cmd中运行更新数据库之前,请使用“ echo%ASPNETCORE_ENVIRONMENT%”检查指向的内容。并作为Deepinsight检查您的startup.cs和该行。.AddJsonFile($“ appsettings。{env.EnvironmentName} .json”,可选:true)
要自动更新数据库,请在您的配置/启动中添加。DbInitializer.Initialize(_context),然后在该方法中添加_context.Database.MigrateAsync()。当您启动环境时,偏头痛适用于环境。