创建了一个类库 (.Net Core)类型的项目,连接库以使用我的 DBMS 中的 EF.Core(Microsoft.EntityFrameworkCore.Tools 2.2.6 的兼容版本)
在cmd中运行
cd myProjectPath
dotnet user-secrets init
dotnet user-secrets set ConnectionStrings.MyDb "User Id=MyDbUser;Password=MyDbUserPass;Data Source=MyDbHost:99999/instancename;"
两个命令都成功完成
然后我尝试在cmd中执行
dotnet ef dbcontext scaffold Name=ConnectionStrings.MyDb ...
或者在 PMC
Scaffold-DbContext Name=ConnectionStrings.MyDb ...
使用了命名连接字符串,但在应用程序的配置中找不到名称“ConnectionStrings.MyDb”。请注意,仅在使用“IConfiguration”和服务提供者时才支持命名连接字符串,例如在典型的 ASP.NET Core 应用程序中。有关详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=850912。
如果只是在 PMC
Scaffold-DbContext "User Id=MyDbUser;Password=MyDbUserPass;Data Source=MyDbHost:99999/instancename;" ...
,然后一切正常,创建上下文和模型
问题不在于使用秘密管理器。秘密,它只是创建命名连接字符串的方法之一——
named connections string。为了使用
named connections string项目必须有一个配置。文本中写的是什么异常。要进行配置,仅保存 .json 文件(无论是secrets.json或appsettings.json还是YourConfigName.json)是不够的,您需要将它们包含在配置中。由于类库没有入口点,因此无法将它们包含在配置中。但它的秘诀是可能没有问题,但在类库中使用它并不是那么容易。
为了使用Scaffold c
named connections string(无论在哪里保密),您需要在可以支持配置的解决方案中添加一个启动项目,例如Web Application。存储配置,如果您需要秘密,则需要将其存储在其中。不要忘记在 Startup.cs 中包含配置。自然,使用 Scaffold,模型和上下文也将在其中创建。但是,如果您希望在类库中创建它们怎么办?将配置项目保留为启动项目。并在 PCM 界面中,选择为 Default Project --- 你的类库。然后做脚手架。通过
dotnet ef我没有检查,但我认为转到库目录并从中执行命令就足够了。