namespace Admin.NET.Core;
///
/// SqlSugar仓储类
///
///
public class SqlSugarRepository : SimpleClient where T : class, new()
{
protected ITenant iTenant = null; // 多租户事务
public SqlSugarRepository(ISqlSugarClient context = null) : base(context)
{
iTenant = App.GetRequiredService().AsTenant();
// 根据租户业务实体是否切库
if (typeof(T).IsDefined(typeof(TenantBusinessAttribute), false))
{
var tenantId = App.GetRequiredService().TenantId; // 根据租户Id切库
if (!iTenant.IsAnyConnection(tenantId.ToString()))
{
var tenant = App.GetRequiredService().Get>(CacheConst.KeyTenant)
.FirstOrDefault(u => u.Id == tenantId);
iTenant.AddConnection(new ConnectionConfig()
{
ConfigId = tenant.Id,
DbType = tenant.DbType,
ConnectionString = tenant.Connection,
IsAutoCloseConnection = true
});
SqlSugarSetup.SetDbAop(iTenant.GetConnectionScope(tenantId.ToString()));
}
base.Context = iTenant.GetConnectionScope(tenantId.ToString());
}
else
{
base.Context = iTenant.GetConnectionScopeWithAttr();
}
}
}