.NET 6:如何让用户机密在 class 库中工作?
.NET 6: how to get user-secrets working in a class library?
我正在尝试将我的数据访问与我的 WebAPI 分开。
所以我为我的 entity framework core 6
模型和上下文创建了一个简单的 .NET 6 class 库 (dotnet new classlib -f net6.0 )
。
我在WebAPI工程中运行dotnet user-secrets init
然后把.csproj
文件中的<UserSecretsId>
复制到DAL工程的.csproj
文件中。
// (school.WebAPI.csproj) added reference in School.WebAPI to School.DAL
<ProjectReference Include="..\School.DAL\School.DAL.csproj" />
现在我正在尝试搭建数据库。
dotnet ef dbcontext scaffold name=ConnectionStrings:SchoolDev Microsoft.EntityFrameworkCore.SqlServer -o Models --context-dir Data --schema dbo -f
这会产生以下错误:
System.InvalidOperationException: A named connection string was used, but the name 'ConnectionStrings:SchoolDev' was not found in the application's configuration.
当我在 WebAPI
项目中 运行 相同的命令时,它完美地工作。
我读到一些关于 var builder = WebApplication.CreateBuilder(args);
被 CLI 用来读取 secrets.json
的内容。但我感到困惑,因为我觉得 WebApplication.CreateBuilder(args)
不属于 DAL
项目。
如何设置从 class 库中的 cli 访问用户机密?
您可以 运行 解决方案根目录中的 EF 命令 -s path/to/API_project -p path/to/SQL_project
。
这样,它使用启动项目 (-s) 确定配置,使用项目 (-p) 定位 EF 上下文。
文档:https://docs.microsoft.com/en-us/ef/core/cli/dotnet#target-project-and-startup-project
我正在尝试将我的数据访问与我的 WebAPI 分开。
所以我为我的 entity framework core 6
模型和上下文创建了一个简单的 .NET 6 class 库 (dotnet new classlib -f net6.0 )
。
我在WebAPI工程中运行dotnet user-secrets init
然后把.csproj
文件中的<UserSecretsId>
复制到DAL工程的.csproj
文件中。
// (school.WebAPI.csproj) added reference in School.WebAPI to School.DAL
<ProjectReference Include="..\School.DAL\School.DAL.csproj" />
现在我正在尝试搭建数据库。
dotnet ef dbcontext scaffold name=ConnectionStrings:SchoolDev Microsoft.EntityFrameworkCore.SqlServer -o Models --context-dir Data --schema dbo -f
这会产生以下错误:
System.InvalidOperationException: A named connection string was used, but the name 'ConnectionStrings:SchoolDev' was not found in the application's configuration.
当我在 WebAPI
项目中 运行 相同的命令时,它完美地工作。
我读到一些关于 var builder = WebApplication.CreateBuilder(args);
被 CLI 用来读取 secrets.json
的内容。但我感到困惑,因为我觉得 WebApplication.CreateBuilder(args)
不属于 DAL
项目。
如何设置从 class 库中的 cli 访问用户机密?
您可以 运行 解决方案根目录中的 EF 命令 -s path/to/API_project -p path/to/SQL_project
。
这样,它使用启动项目 (-s) 确定配置,使用项目 (-p) 定位 EF 上下文。
文档:https://docs.microsoft.com/en-us/ef/core/cli/dotnet#target-project-and-startup-project