using AutoMapper; using DMS.Core.Interfaces; using DMS.Core.Interfaces.Repositories; using DMS.Core.Interfaces.Repositories.Triggers; // 引入新的接口 using DMS.Infrastructure.Data; using SqlSugar; namespace DMS.Infrastructure.Repositories; /// /// 仓储管理器实现类,负责管理所有具体的仓储实例,并提供事务管理功能。 /// 实现 接口。 /// public class RepositoryManager : IRepositoryManager { private readonly SqlSugarDbContext _dbContext; private readonly SqlSugarClient _db; /// /// 构造函数,注入所有仓储实例。 /// /// 初始化仓储实例。 /// 设备仓储实例。 /// 变量表仓储实例。 /// 变量仓储实例。 /// MQTT服务器仓储实例。 /// 变量MQTT别名仓储实例。 /// 菜单仓储实例。 /// 变量历史仓储实例。 /// 用户仓储实例。 /// Nlog日志仓储实例。 /// 触发器仓储实例。 public RepositoryManager( SqlSugarDbContext dbContext, IInitializeRepository initializeRepository, IDeviceRepository devices, IVariableTableRepository variableTables, IVariableRepository variables, IMqttServerRepository mqttServers, IVariableMqttAliasRepository variableMqttAliases, IMenuRepository menus, IVariableHistoryRepository variableHistories, IUserRepository users, INlogRepository nlogs, ITriggerRepository triggers) // 新增参数 { _dbContext = dbContext; InitializeRepository = initializeRepository; Devices = devices; VariableTables = variableTables; Variables = variables; MqttServers = mqttServers; VariableMqttAliases = variableMqttAliases; Menus = menus; VariableHistories = variableHistories; Users = users; Nlogs = nlogs; Triggers = triggers; // 赋值 _db = dbContext.GetInstance(); } /// /// 释放数据库连接资源。 /// 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; } /// /// 获取Nlog日志仓储实例。 /// public INlogRepository Nlogs { get; set; } /// /// 获取触发器仓储实例。 /// public ITriggerRepository Triggers { get; set; } /// /// 获取初始化仓储实例。 /// public IInitializeRepository InitializeRepository { get; set; } /// /// 异步开始数据库事务。 /// /// 表示异步操作的任务。 public async Task BeginTranAsync() { if (_db != null) await _db.BeginTranAsync(); } /// /// 异步提交数据库事务。 /// /// 表示异步操作的任务。 public async Task CommitAsync() { if (_db != null) await _db.CommitTranAsync(); } /// /// 异步回滚数据库事务。 /// /// 表示异步操作的任务。 public async Task RollbackAsync() { if (_db != null) await _db.RollbackTranAsync(); } }