当我创建 .net 核心 Web 应用程序时,我在测试期间使用秘密管理器。我通常能够创建一个新的 web 项目(mvc 和 web api),右键单击该项目并选择“管理用户机密”。这将打开一个 json 文件,我在其中添加秘密。然后我在我的 startup.cs 中使用它,如下所示:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql(Configuration["connectionString"]));
该网站可以正常工作,并且可以很好地连接到数据库。但是,当我尝试使用诸如 ef 核心迁移命令时add-migration
,它们似乎无法从秘密管理器访问连接字符串。我收到错误消息“连接字符串不能为空”。当我Configuration["connectionString"]
使用实际字符串进行硬编码时,错误消失了。我已经在线检查并检查了 .csproj 文件,它们已经包含以下几行:
<UserSecretsId>My app name</UserSecretsId>
然后:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
我需要添加什么以便迁移可以访问连接字符串吗?
更新
我在上下文类中只有一个构造函数:
public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
{
}