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

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

csharp 复制代码
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注册实例服务。大致实现代码如下:

csharp 复制代码
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

相关推荐
伍华聪1 天前
在Vue3+ElementPlus前端中增加表格记录选择的自定义组件,通过结合Popover 弹出框和Input输入框或者按钮选择实现
sqlsugar·vue3+typescript
伍华聪2 天前
在SqlSugar的开发框架的Vue3+ElementPlus前端中增加对报表模块的封装处理,实现常规报表的快速处理
sqlsugar
饭勺oO4 天前
从WebApi迁移到Minimal API?有了这个神器,小白也能10分钟搞定!
asp.net core·minimalapi
demon75520031 个月前
Mybatis-Plus支持多种数据库
mybatis·多数据库
专注VB编程开发20年2 个月前
在 ASP.NET 中,HTTP 处理程序(HttpHandler)是处理 HTTP 请求的核心组件
iis·asp.net·asp.net core
gc_22993 个月前
采用SqlSugarClient创建数据库实例引发的异步调用问题
sqlsugar·sqlsugarclient·sqlsugarscope
伍华聪3 个月前
在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持
sqlsugar·mongodb数据库·eav模型设计
EdisonZhou4 个月前
使用MCP C# SDK开发MCP Server + Client
llm·aigc·asp.net core·.net core
超软毛毛虫4 个月前
ASP.NET Core 模型验证消息的本地化新姿势
asp.net core·localization
lixww.cn5 个月前
ASP.NET Core用MediatR实现领域事件
ddd·asp.net core·mediatr