using Furion;
using SqlSugar;
using System.Reflection;
namespace Admin.NET.Core
{
///
/// SqlSugar仓储类
///
///
public class SqlSugarRepository : SimpleClient where T : class, new()
{
public SqlSugarRepository(ISqlSugarClient context = null) : base(context) // 默认值等于null不能少
{
base.Context = App.GetService(); // 用手动获取方式支持切换仓储
// 数据库上下文根据实体切换,业务分库(使用环境例如微服务)
var entityType = typeof(T);
// 切换框架数据库
if (entityType.IsDefined(typeof(SqlSugarEntityAttribute), false))
{
var tenantAttribute = entityType.GetCustomAttribute()!;
Context.AsTenant().ChangeDatabase(tenantAttribute.DbConfigId);
}
// 切换租户数据库
if (entityType.IsDefined(typeof(TenantAttribute), false))
{
var tenantAttribute = entityType.GetCustomAttribute(false)!;
Context.AsTenant().ChangeDatabase(tenantAttribute.configId);
}
}
}
}