.NET 6不使用Entity Framework配置多数据库连接字符串方法
.NET 6 非EF场景下多连接字符串配置实现
我是.NET Core新手,此前所有项目均基于.NET Framework开发,目前需要将项目迁移至.NET 6。
在.NET Framework环境中,我习惯在Web.config中配置多组连接字符串:
<add key="ConnStr" value="Data Source=DESKTOP-854AIA7;Initial Catalog=TestOTA;User ID=sa;Password=1"/> <add key="ConnStrReport" value="Data Source=192.168.5.226;Initial Catalog=cachrsp01;User ID=sa;Password=123@123"/> <add key="ConnStrLog" value="Data Source=192.168.5.226;Initial Catalog=loghrsp01;User ID=sa;Password=123@123"/>
之后编写统一的连接字符串管理类,在属性内部读取配置、做空值校验:
public class AccessToDb{ public static string ConnectionString { get { string tmp = System.Configuration.ConfigurationManager.AppSettings["ConnStr"]; if (string.IsNullOrEmpty(tmp)) { // 执行空值处理逻辑 } return tmp; } } public static string ConnectionStringLog { get { string tmp = System.Configuration.ConfigurationManager.AppSettings["ConnStrLog"]; if (string.IsNullOrEmpty(tmp)) { // 执行空值处理逻辑 } return tmp; } } }
业务代码中根据实际需求调用对应静态属性,即可创建对应数据库的连接,调用方式如下:
objSqlCommand.Connection = new SqlConnection(AccessToDb.ConnectionString); // 调用日志库连接时使用 objSqlCommand.Connection = new SqlConnection(AccessToDb.ConnectionStringLog);
迁移到.NET 6后,检索到的公开资料里连接字符串配置方案全部基于Entity Framework实现,无法匹配手写ADO.NET的使用场景,不清楚连接字符串的配置位置、初始化方式、业务调用方法。
验证可行的落地方案
经过实际调试,以下方案可以完全对齐原有.NET Framework的使用习惯,无需引入EF相关依赖:
- 配置连接字符串:在项目根目录的
appsettings.json文件中新增ConnectionStrings配置节点,写入所有需要用到的数据库连接信息:
{ "ConnectionStrings": { "mymainDB": "server=192.168.5.226;database=cachrsp01;user id=sa;password='123@123'", "myLogDB": "server=192.168.5.226;database=loghrsp01;user id=sa;password='123@123'" } }
- 调整连接管理类:保留原有静态类的设计,移除原
ConfigurationManager读取逻辑,将属性改为可赋值的静态属性:
public class AccessToDb { public static string ConnectionString { get; set; } public static string ConnectionStringLog { get; set; } }
- 启动阶段初始化配置:在项目启动入口
Program.cs中,通过配置框架读取appsettings.json中的连接字符串,给静态类的属性赋值完成初始化:
AccessToDb.ConnectionString = builder.Configuration.GetConnectionString("mymainDB"); AccessToDb.ConnectionStringLog = builder.Configuration.GetConnectionString("myLogDB");
完成以上配置后,业务代码中的连接调用逻辑和.NET Framework时期完全一致,不需要修改原有SqlConnection相关的业务代码,该方案已实测可正常运行。
内容的提问来源于stack exchange,提问作者Mishaa
相关产品推荐
相关产品推荐

