using AutoMapper; using DMS.Core.Interfaces; using DMS.Core.Interfaces.Repositories; using DMS.Infrastructure.Data; using SqlSugar; namespace DMS.Infrastructure.Repositories; /// /// 仓储管理器实现类,负责管理所有具体的仓储实例,并提供事务管理功能。 /// 实现 接口。 /// public class RepositoryManager : IRepositoryManager { private readonly SqlSugarClient _db; private readonly IMapper _mapper; private readonly SqlSugarDbContext _dbContext; /// /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 /// 在此初始化所有具体的仓储实例。 /// /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 /// SqlSugar 数据库上下文,用于数据库操作。 public RepositoryManager(IMapper mapper, SqlSugarDbContext dbContext) { _mapper = mapper; _dbContext = dbContext; _db = dbContext.GetInstance(); // 初始化各个仓储实例 InitializeRepository=new InitializeRepository(dbContext); Devices = new DeviceRepository(mapper, dbContext); VariableTables = new VariableTableRepository(mapper, dbContext); Variables = new VariableRepository(mapper, dbContext); MqttServers = new MqttServerRepository(mapper, dbContext); VariableMqttAliases = new VariableMqttAliasRepository(mapper, dbContext); Menus = new MenuRepository(mapper, dbContext); VariableHistories = new VariableHistoryRepository(mapper, dbContext); Users = new UserRepository(mapper, dbContext); } /// /// 释放数据库连接资源。 /// public void Dispose() { _db.Close(); } /// /// 获取设备仓储实例。 /// public IDeviceRepository Devices { get; set; } /// /// 获取变量表仓储实例。 /// public IVariableTableRepository VariableTables { get; set; } /// /// 获取变量仓储实例。 /// public IVariableRepository Variables { get; set; } /// /// 获取MQTT服务器仓储实例。 /// public IMqttServerRepository MqttServers { get; set; } /// /// 获取变量MQTT别名仓储实例。 /// public IVariableMqttAliasRepository VariableMqttAliases { get; set; } /// /// 获取菜单仓储实例。 /// public IMenuRepository Menus { get; set; } /// /// 获取变量历史仓储实例。 /// public IVariableHistoryRepository VariableHistories { get; set; } /// /// 获取用户仓储实例。 /// public IUserRepository Users { get; set; } /// /// 获取初始化仓储实例。 /// public IInitializeRepository InitializeRepository { get; set; } /// /// 异步开始数据库事务。 /// /// 表示异步操作的任务。 public async Task BeginTranAsync() => await _db.BeginTranAsync(); /// /// 异步提交数据库事务。 /// /// 表示异步操作的任务。 public async Task CommitAsync() => await _db.CommitTranAsync(); /// /// 异步回滚数据库事务。 /// /// 表示异步操作的任务。 public async Task RollbackAsync() => await _db.RollbackTranAsync(); }