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

脚手架生成MySQL表后,如何用DI从appsettings.json取EF Core连接字符串

基于依赖注入实现EF Core上下文从appsettings.json获取连接字符串(模型独立类库场景)

步骤1:修改独立类库中的DbContext类

移除OnConfiguring方法里的硬编码配置逻辑,改用构造函数注入DbContextOptions:

public class YourDbContext : DbContext
{
    // 通过构造函数接收DI注入的配置选项
    public YourDbContext(DbContextOptions<YourDbContext> options) : base(options)
    {
    }

    // 声明你的实体集合(示例)
    // public DbSet<Product> Products { get; set; }
}

如果需要兼容非DI场景(比如控制台程序直接使用),可以保留OnConfiguring但增加判断:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    // 仅当未通过DI配置时才执行本地配置
    if (!optionsBuilder.IsConfigured)
    {
        IConfigurationRoot configuration = new ConfigurationBuilder()
               .SetBasePath(Directory.GetCurrentDirectory())
               .AddJsonFile("appsettings.json")
               .Build();

        var connectionString = configuration.GetConnectionString("DefaultConnection");
        optionsBuilder.UseSqlServer(connectionString); // MySQL请替换为UseMySql
    }
}

步骤2:在主项目配置连接字符串

在主项目(如ASP.NET Core项目)的appsettings.json中添加连接字符串:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=你的数据库地址;Database=目标库名;User Id=账号;Password=密码;TrustServerCertificate=True;"
  }
}

步骤3:在主项目注册DbContext到DI容器

以.NET 6+的Program.cs为例,将DbContext注册到依赖注入容器,并从配置中读取连接字符串:

var builder = WebApplication.CreateBuilder(args);

// 注册DbContext,从appsettings.json读取配置
builder.Services.AddDbContext<YourDbContext>(options =>
{
    var connStr = builder.Configuration.GetConnectionString("DefaultConnection");
    // MySQL场景请替换为UseMySql,需提前安装Pomelo.EntityFrameworkCore.MySql包
    options.UseSqlServer(connStr);
});

// 其他服务注册、中间件配置...

var app = builder.Build();
app.Run();

注意事项

  • 独立类库需安装Microsoft.EntityFrameworkCore,以及对应数据库的EF Core驱动包(MySQL用Pomelo.EntityFrameworkCore.MySql)
  • 主项目必须引用你的模型类库
  • 确保主项目的appsettings.json文件复制到输出目录(右键文件→属性→复制到输出目录:如果较新则复制)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:30:46