个人网站做支付宝收款,微信营销和网站建设,三元里网站建设,丹东网站建设平台之前学习ASP.NETCore及SqlSugar时都是只连接单个数据库处理数据#xff0c;仅需在Program文件中添加ISqlSugarClient的单例即可#xff08;如下代码所示#xff09;。
builder.Services.AddSingletonISqlSugarClient(s
{SqlSugarScope sqlSugar new SqlSugar… 之前学习ASP.NETCore及SqlSugar时都是只连接单个数据库处理数据仅需在Program文件中添加ISqlSugarClient的单例即可如下代码所示。
builder.Services.AddSingletonISqlSugarClient(s
{SqlSugarScope sqlSugar new SqlSugarScope(new ConnectionConfig(){DbType SqlSugar.DbType.SqlServer,ConnectionString builder.Configuration.GetValuestring(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.AddSingletonMultiDBClient(s
{MultiDBClient client new MultiDBClient();SqlSugarScope sqlSugar new SqlSugarScope(new ConnectionConfig(){DbType SqlSugar.DbType.SqlServer,ConnectionString builder.Configuration.GetValuestring(dbContext1),IsAutoCloseConnection true,});client.DB1 sqlSugar;sqlSugar new SqlSugarScope(new ConnectionConfig(){DbType SqlSugar.DbType.SqlServer,ConnectionString builder.Configuration.GetValuestring(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_sugarClientclient.DB2; }
}测试了上面的代码在不同控制器类中按需获取相应的数据库连接使用即可。照着这种思路针对不同的数据库定义不同的类也可以全部注册为实例在控制器类中按需使用可能更简单。
参考文献 [1]https://www.donet5.com/Home/Doc