.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
相关产品推荐
相关产品推荐

