You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让dotnet ef dbcontext scaffold使用secrets.json中的连接字符串?

解决方法:通过启动项目加载用户密钥配置

可以实现用用户密钥中的连接字符串执行scaffold命令,核心是让EF Core加载ASP.NET Core的配置系统(包含用户密钥),具体操作如下:

  • 前提确认:你的项目是ASP.NET Core项目(如果是类库项目,需要搭配一个ASP.NET Core启动项目),且已正确安装EF Core工具和对应数据库的Provider包(比如Microsoft.EntityFrameworkCore.SqlServer)。

  • 正确设置用户密钥:
    在项目目录下执行命令,确保连接字符串完整且格式正确:

    dotnet user-secrets set "ConnectionStrings:MyConnectionString" "Server=MyServerName;Database=MyDBName;User Id=sa;Password=abc123;"
    

    执行dotnet user-secrets list验证,确认输出为ConnectionStrings:MyConnectionString = Server=MyServerName;Database=MyDBName;User Id=sa;Password=abc123;。

  • 执行scaffold命令:

    1. 如果是直接在ASP.NET Core Web项目目录下操作:

      dotnet ef dbcontext scaffold name=ConnectionStrings:MyConnectionString Microsoft.EntityFrameworkCore.SqlServer --output-dir Models
      

      这里name=ConnectionStrings:MyConnectionString对应用户密钥中的配置项,Microsoft.EntityFrameworkCore.SqlServer是数据库提供者(根据你的数据库替换,比如MySQL用Pomelo.EntityFrameworkCore.MySql),--output-dir Models指定生成类的目录。

    2. 如果你的数据访问层是类库项目:
      需要指定项目和启动项目,让EF Core加载启动项目的配置系统:

      dotnet ef dbcontext scaffold name=ConnectionStrings:MyConnectionString Microsoft.EntityFrameworkCore.SqlServer --project YourDataLibrary --startup-project YourWebProject --output-dir Models
      
  • 原理说明:
    你之前的命令失败,是因为单独运行dotnet ef dbcontext scaffold时,EF Core默认不会初始化ASP.NET Core的IConfiguration体系,自然无法读取用户密钥。通过指定启动项目(或直接在Web项目下运行),EF会复用启动项目的配置加载逻辑,包括读取用户密钥中的连接字符串。

内容的提问来源于stack exchange,提问作者NibblyPig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:36:29