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

DataSourceFactory如何判断使用传入字符串还是配置文件连接串?

疑问解析:DataSourceFactory连接串逻辑困惑

问题描述

我创建了一个DataSourceFactory,用来在测试Service文件时方便传入TestContainers的连接串,现在功能已经实现,但搞不懂它的工作原理。已知当没有传入字符串时,会用"Default"键从appsettings.json里获取连接串。但测试里直接用NpgsqlDataSource.Create(_postgres.GetConnectionString())的时候,我疑惑为什么不会触发DataSourceFactory.Create方法里connectionString = _configuration.GetConnectionString(connectionString ?? "Default")的逻辑去读appsettings.json,而是直接用传入的连接串创建NpgsqlDataSource?

解答

核心原因特别直白——你测试里调用的是NpgsqlDataSource的原生静态Create方法,压根没用到你自己写的DataSourceFactory.Create工厂方法!

拆解下逻辑细节:

  • 你在DataSourceFactory.Create里写的那行连接串处理代码,是你自己封装的自定义逻辑,只有当你主动调用这个工厂方法时,这段逻辑才会执行。
  • 测试里的NpgsqlDataSource.Create(...)是Npgsql库自带的方法,它的逻辑就是直接接收你传入的连接串参数,然后创建数据源,完全和你的DataSourceFactory没关系,自然不会去读appsettings.json。

打个简单的比方:你自己做了一台能自动加冰的饮料机(DataSourceFactory),但你测试的时候直接买了便利店的现成饮料(Npgsql原生方法),那肯定不会触发你饮料机的加冰逻辑啊。

内容的提问来源于stack exchange,提问作者Top-Associate404

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:50:54