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

如何在.NET Core控制台应用中为EF Scaffolding使用命名连接字符串管理密钥

.NET Core控制台应用使用命名连接字符串执行EF Scaffold命令的解决方案

前置准备

先给控制台项目安装必要的NuGet包:

  • 对应数据库的EF Core驱动(比如SQL Server用Microsoft.EntityFrameworkCore.SqlServer,PostgreSQL用Npgsql.EntityFrameworkCore.PostgreSQL)
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.Extensions.Configuration.Json

步骤1:配置appsettings.json

在项目根目录新建appsettings.json文件,内容参考如下:

{
  "ConnectionStrings": {
    "ClientConnection": "你的实际数据库连接字符串"
  }
}

右键点击appsettings.json → 选择【属性】→ 将【复制到输出目录】修改为如果较新则复制。

步骤2:添加设计时DbContext工厂

EF Core脚手架在控制台项目中默认不会自动读取配置,需要手动实现IDesignTimeDbContextFactory<T>接口,告知脚手架读取配置、创建DbContext实例的逻辑。
在项目中新建类文件ClientDbContextFactory.cs,示例代码如下(如果你的DbContext名称不同,替换泛型参数中的ClientDbContext即可):

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using System.IO;

public class ClientDbContextFactory : IDesignTimeDbContextFactory<ClientDbContext>
{
    public ClientDbContext CreateDbContext(string[] args)
    {
        // 读取本地配置文件
        IConfigurationRoot configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json")
            .Build();

        // 构建DbContext配置
        var optionsBuilder = new DbContextOptionsBuilder<ClientDbContext>();
        optionsBuilder.UseSqlServer(configuration.GetConnectionString("ClientConnection"));
        // 如果使用PostgreSQL则替换为:
        // optionsBuilder.UseNpgsql(configuration.GetConnectionString("ClientConnection"));

        return new ClientDbContext(optionsBuilder.Options);
    }
}

步骤3:执行Scaffold命令

完成上述配置后,直接在NuGet包管理器控制台执行原格式命令即可,不需要明文填写连接串:
Scaffold-DbContext Name=ConnectionStrings:ClientConnection Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

注意把命令中的数据库驱动、输出目录参数替换为你实际需要的配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:09:04