自学内容网 自学内容网

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

  之前学习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


原文地址:https://blog.csdn.net/gc_2299/article/details/144147670

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!