using DS.Module.Core; using DS.Module.Core.Extensions; using DS.Module.UserModule; using DS.WMS.Core.System.Entity; using Microsoft.Extensions.DependencyInjection; using SqlSugar; using NLog; namespace DS.Module.SqlSugar; /// /// saas数据库服务 /// public class SaasDbService:ISaasDbService { private readonly IServiceProvider _serviceProvider; private readonly SqlSugarScope db; private readonly IUser user; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); /// /// 构造函数 /// /// public SaasDbService(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; db = (SqlSugarScope)_serviceProvider.GetRequiredService(); user = _serviceProvider.GetRequiredService(); } /// /// 根据用户租户Id获取业务库 /// /// public ISqlSugarClient GetBizDb() { var tenantId = user.GetTenantId().ToString(); if(!db.IsAnyConnection(tenantId)) { var connInfo = GetMasterDb().Queryable().First(x => x.TenantId == long.Parse(tenantId)); //用非默认ConfigId进行测试 //添加业务库只在当前上下文有效(原理:SqlSugarScope模式入门文档去看) db.AddConnection(new ConnectionConfig() { ConfigId = tenantId, ConnectionString = connInfo.Connection, DbType = connInfo.DbType, IsAutoCloseConnection = true }); } return db.GetConnection(tenantId); } /// /// 获取主库信息 /// /// public ISqlSugarClient GetMasterDb() { return db.GetConnection("1288018625843826688"); } }