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

EF Core反向生成后上下文文件含连接字符串,如何避免?

避免EF Core反向生成时将连接字符串写入上下文文件的方法

要解决反向生成时连接字符串被硬编码到上下文文件的问题,只需在scaffold命令中使用Name=语法引用配置文件中的连接字符串名称,具体步骤如下:

1. 修改反向生成命令

将原来直接传入完整连接字符串的命令,改为引用配置项名称:

dotnet ef dbcontext scaffold "Name=ConnectionStrings:SecurityContext" MySql.EntityFrameworkCore -o DataService/ModelsByMicroservice/Security --context-dir DataService/DBContexts -c SecurityContext -f

这里Name=ConnectionStrings:SecurityContext表示让EF Core从应用配置中读取ConnectionStrings节点下名为SecurityContext的连接字符串值。

2. 在配置文件中添加连接字符串

在项目的appsettings.json(或对应环境的配置文件)中添加连接字符串配置:

{
  "ConnectionStrings": {
    "SecurityContext": "server=localhost;port=3306;userid=root;password=****;database=*******;persistsecurityinfo=True"
  }
}

3. 生成后的上下文变化

执行修改后的命令后,生成的OnConfiguring方法不会再包含硬编码的完整连接字符串,而是变为引用配置项的形式:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
#warning 为保护连接字符串中的敏感信息,请将其移出源代码。可通过使用 Name= 语法从配置中读取来避免在反向生成时写入连接字符串。有关存储连接字符串的更多指导,请参考相关文档。
        optionsBuilder.UseMySQL("Name=ConnectionStrings:SecurityContext");
    }
}

这样一来,敏感的连接信息(如密码)就不会出现在源代码文件中,同时也便于在不同部署环境中切换配置。

内容的提问来源于stack exchange,提问作者Sergio Rondon Polanco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:15:33