ASP.NET Core项目中使用SqlSugar连接多个数据库的方式

news/2024/12/4 15:48:06/

  之前学习ASP.NETCore及SqlSugar时都是只连接单个数据库处理数据,仅需在Program文件中添加ISqlSugarClient的单例即可(如下代码所示)。

builder.Services.AddSingleton<ISqlSugarClient>(s =>
{SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig(){DbType = SqlSugar.DbType.SqlServer,ConnectionString = builder.Configuration.GetValue<string>("dbContext"),IsAutoCloseConnection = false,});return sqlSugar;
});

  如果需要连接多个数据库(不是跨数据库联查,仅是连两个数据库),第一时间想到的是创建多个全局实例,在需要的地方直接调用。原先使用Linq的时候经常这么干,每个DBContext对应一个数据库,程序启动时创建多个DBContext实例,然后在WebService中直接使用。
  百度“sqlsugar 多数据库”,不少文件介绍使用SqlSugar的多租户或仓储方式连接多数据,没有深入看下去,感觉很麻烦。最后参考百度搜索工具给的建议,创建包含多个ISqlSugarClient属性的类,每个属性对应一个数据库连接,然后调用builder.Services.AddSingleton注册实例服务。大致实现代码如下:

public class MultiDBClient
{public ISqlSugarClient DB1 { get; set; }public ISqlSugarClient DB2 { get; set; }
}builder.Services.AddSingleton<MultiDBClient>(s =>
{MultiDBClient client = new MultiDBClient();SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig(){DbType = SqlSugar.DbType.SqlServer,ConnectionString = builder.Configuration.GetValue<string>("dbContext1"),IsAutoCloseConnection = true,});client.DB1 = sqlSugar;sqlSugar = new SqlSugarScope(new ConnectionConfig(){DbType = SqlSugar.DbType.SqlServer,ConnectionString = builder.Configuration.GetValue<string>("dbContext2"),IsAutoCloseConnection = true,});client.DB2 = sqlSugar;return client;
});public class ECDataController : ControllerBase
{private ISqlSugarClient m_sugarClient;public ECDataController(MultiDBClient client, IWebHostEnvironment env, ILoggerProvider logger){m_sugarClient=client.DB2;        }
}

  测试了上面的代码,在不同控制器类中按需获取相应的数据库连接使用即可。照着这种思路,针对不同的数据库定义不同的类也可以,全部注册为实例,在控制器类中按需使用可能更简单。

参考文献:
[1]https://www.donet5.com/Home/Doc


http://www.ppmy.cn/news/1552317.html

相关文章

详解Qt Pdf之QPdfBookmarkModel 读取pdf标签页并显示

文章目录 前言1. Qt 中的 QPdfBookmarkModel 简介1.1 主要成员类型和方法 2. 使用 QPdfBookmarkModel 显示 PDF 标签页2.1 准备环境2.2 创建界面和基本结构2.3 加载 PDF 文件并显示书签2.4 显示书签 总结 前言 Qt 是一个强大的跨平台应用程序开发框架&#xff0c;它提供了许多…

Android Studio 右侧工具栏 Gradle 不显示 Task 列表

问题&#xff1a; android studio 4.2.1版本更新以后AS右侧工具栏Gradle Task列表不显示&#xff0c;这里需要手动去设置 解决办法&#xff1a; android studio 2024.2.1 Patch 2版本以前的版本设置&#xff1a;依次打开 File -> Settings -> Experimental 选项&#x…

【Ant Design Pro】1. config 配置

前置说明 这里我使用的是 simple 版本&#xff0c;并结合 antd pro 脚手架搭建&#xff08;现在默认使用为 umi4 版本&#xff09;&#xff1a; 虽然这个文档好像已经好久没有更新了。 config 文件&#xff1a; config.ts // https://umijs.org/config/ import { defineConfi…

专讲debug的文章

https://arxiv.org/pdf/2402.16906 这篇文章是在通义实验室的codebase里找到的&#xff0c;感觉是我比较关心的LLM相关的研究&#xff0c;主要想看下现在对代码测试的自动化程度&#xff0c;以及使用的方法以及一些观点视角&#xff0c;看了给定的实例是类似力扣上的那种代码&…

51单片机从入门到精通:理论与实践指南入门篇(三)

上一节博客给大家基本介绍了51单片机 51单片机从入门到精通&#xff1a;理论与实践指南入门篇&#xff08;二&#xff09; https://blog.csdn.net/speaking_me/article/details/144068159?spm1001.2014.3001.5501 那么这节课就来介绍——花样流水灯的实现 花样流水灯电路设…

网络安全系列 之 SQL注入学习总结

目录 1. sql注入概述2. sql注入测试工具3. sql注入防御方法 3.1 问题来源3.2 防御方法4. SQL注入防御举例 4.1 使用JDBC时&#xff0c;SQL语句进行了拼接 1. 使用statement的executeQuery、execute、executeUpdate等函数时&#xff0c;传入的SQL语句拼接了来自外部的不可信参数…

联想YOGA Pro 14s至尊版电脑找不到独立显卡(N卡)问题,也无法安装驱动的问题

问题描述 电脑是联想YOGA Pro 14s至尊版&#xff0c;电脑上装的独立显卡是4060&#xff0c;一直是能够使用独立显卡的。然而有两次突然就找不到显卡了&#xff0c;NVIDIA CONTROL PANEL也消失了&#xff0c;而且也无法安装驱动。具体表现如下&#xff1a; 无法连接外接显示器…

【音视频】HLS和DASH 流媒体协议的详细介绍和实现方式

深入探讨 HLS 和 DASH 流媒体协议 1. HLS&#xff08;HTTP Live Streaming&#xff09; 核心技术细节 HLS&#xff08;HTTP Live Streaming&#xff09;是由苹果公司提出的一种基于 HTTP 协议的流媒体协议。它将视频分割成多个小片段&#xff0c;通过 .m3u8 文件作为索引进行…