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

.NET 6子项目中Entity Framework无法读取传入的连接字符串

解决EF类库项目读取主项目连接字符串的问题

问题根源

你的MyDataContext中重写的OnConfiguring方法会无条件执行——哪怕主项目已经通过构造函数传入了配置好的DbContextOptions<MyDataContext>,这个方法里的测试连接字符串还是会覆盖掉主项目传入的生产配置。

修复方案

修改EFProject中MyDataContext的OnConfiguring方法,仅在optionsBuilder未被外部配置时才使用测试连接字符串,代码如下:

public partial class MyDataContext : DbContext
{
    public MyDataContext()
    {
    }

    public MyDataContext(DbContextOptions<MyDataContext> options)
        : base(options)
    {
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // 仅当无外部配置时,才启用测试连接字符串
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("test database connectionstring");
        }
    }
}

额外注意事项

  • DbContext不建议设置为Singleton生命周期:DbContext本身并非线程安全,长期单例可能引发内存泄漏或数据一致性问题,推荐使用默认的Scoped生命周期。
  • 确认主项目appsettings.json加载正常:.NET 6默认会自动加载该配置文件,无需额外配置操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:55:26