diff --git a/DMS.Infrastructure/Repositories/BaseRepository.cs b/DMS.Infrastructure/Repositories/BaseRepository.cs index b939e3f..f21fb34 100644 --- a/DMS.Infrastructure/Repositories/BaseRepository.cs +++ b/DMS.Infrastructure/Repositories/BaseRepository.cs @@ -8,7 +8,7 @@ using SqlSugar; namespace DMS.Infrastructure.Repositories; /// -/// 通用仓储基类,封装了对实体对象的常用 CRUD 操作。 +/// 通用仓储基类,封装了对实体对象的常用 CRUD 操作。 /// /// 实体类型,必须是引用类型且具有无参构造函数。 public abstract class BaseRepository @@ -18,16 +18,16 @@ public abstract class BaseRepository /// - /// 初始化 BaseRepository 的新实例。 + /// 初始化 BaseRepository 的新实例。 /// - /// 事务管理对象,通过依赖注入提供。 + /// SqlSugar 数据库上下文,用于数据库操作。 protected BaseRepository(SqlSugarDbContext dbContext) { _dbContext = dbContext; } /// - /// 获取当前事务的 SqlSugarClient 实例,用于数据库操作。 + /// 获取当前事务的 SqlSugarClient 实例,用于数据库操作。 /// protected SqlSugarClient Db { @@ -35,7 +35,7 @@ public abstract class BaseRepository } /// - /// 异步添加一个新实体。 + /// 异步添加一个新实体。 /// /// 要添加的实体对象。 /// 返回已添加的实体对象(可能包含数据库生成的主键等信息)。 @@ -51,7 +51,7 @@ public abstract class BaseRepository } /// - /// 异步更新一个现有实体。 + /// 异步更新一个现有实体。 /// /// 要更新的实体对象。 /// 返回受影响的行数。 @@ -67,7 +67,7 @@ public abstract class BaseRepository } /// - /// 异步删除一个实体。 + /// 异步删除一个实体。 /// /// 要删除的实体对象。 /// 返回受影响的行数。 @@ -84,7 +84,7 @@ public abstract class BaseRepository /// - /// 异步获取所有实体。 + /// 异步获取所有实体。 /// /// 返回包含所有实体的列表。 public virtual async Task> GetAllAsync() @@ -100,7 +100,7 @@ public abstract class BaseRepository /// - /// 异步根据主键 ID 获取单个实体。 + /// 异步根据主键 ID 获取单个实体。 /// /// 实体的主键 ID。 /// 返回找到的实体,如果未找到则返回 null。 @@ -117,7 +117,7 @@ public abstract class BaseRepository } /// - /// 异步根据指定条件获取单个实体。 + /// 异步根据指定条件获取单个实体。 /// /// 查询条件的 Lambda 表达式。 /// 返回满足条件的第一个实体,如果未找到则返回 null。 @@ -133,7 +133,7 @@ public abstract class BaseRepository } /// - /// 异步判断是否存在满足条件的实体。 + /// 异步判断是否存在满足条件的实体。 /// /// 查询条件的 Lambda 表达式。 /// 如果存在则返回 true,否则返回 false。 @@ -148,22 +148,39 @@ public abstract class BaseRepository return result; } + /// + /// 异步开始数据库事务。 + /// + /// 表示异步操作的任务。 public async Task BeginTranAsync() { await Db.BeginTranAsync(); } + /// + /// 异步提交数据库事务。 + /// + /// 表示异步操作的任务。 public async Task CommitTranAsync() { await Db.CommitTranAsync(); } + /// + /// 异步回滚数据库事务。 + /// + /// 表示异步操作的任务。 public async Task RollbackTranAsync() { await Db.RollbackTranAsync(); } + /// + /// 异步获取指定数量的实体。 + /// + /// 要获取的实体数量。 + /// 包含指定数量实体对象的列表。 protected async Task> TakeAsync(int number) { var stopwatch = new Stopwatch(); diff --git a/DMS.Infrastructure/Repositories/DeviceRepository.cs b/DMS.Infrastructure/Repositories/DeviceRepository.cs index a71881f..d433a6d 100644 --- a/DMS.Infrastructure/Repositories/DeviceRepository.cs +++ b/DMS.Infrastructure/Repositories/DeviceRepository.cs @@ -8,39 +8,77 @@ using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; +/// +/// 设备仓储实现类,负责设备数据的持久化操作。 +/// 继承自 并实现 接口。 +/// public class DeviceRepository : BaseRepository, IDeviceRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public DeviceRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { _mapper = mapper; } + /// + /// 异步获取所有设备。 + /// + /// 包含所有设备实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步根据ID获取单个设备。 + /// + /// 设备的唯一标识符。 + /// 对应的设备实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbDevice = await base.GetByIdAsync(id); return _mapper.Map(dbDevice); } + /// + /// 异步添加新设备。 + /// + /// 要添加的设备实体。 + /// 添加成功后的设备实体(包含数据库生成的ID等信息)。 public async Task AddAsync(Core.Models.Device model) { var dbDevice = await base.AddAsync(_mapper.Map(model)); return _mapper.Map(dbDevice, model); } + /// + /// 异步更新现有设备。 + /// + /// 要更新的设备实体。 + /// 受影响的行数。 public async Task UpdateAsync(Core.Models.Device model) => await base.UpdateAsync(_mapper.Map(model)); + /// + /// 异步删除设备。 + /// + /// 要删除的设备实体。 + /// 受影响的行数。 public async Task DeleteAsync(Core.Models.Device model) => await base.DeleteAsync(_mapper.Map(model)); + /// + /// 异步根据ID删除设备。 + /// + /// 要删除设备的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); @@ -52,6 +90,11 @@ public class DeviceRepository : BaseRepository, IDeviceRepository return result; } + /// + /// 异步获取指定数量的设备。 + /// + /// 要获取的设备数量。 + /// 包含指定数量设备实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); diff --git a/DMS.Infrastructure/Repositories/InitializeRepository.cs b/DMS.Infrastructure/Repositories/InitializeRepository.cs index 10b0026..048def2 100644 --- a/DMS.Infrastructure/Repositories/InitializeRepository.cs +++ b/DMS.Infrastructure/Repositories/InitializeRepository.cs @@ -7,20 +7,32 @@ using SqlSugar; namespace DMS.Infrastructure.Repositories; +/// +/// 初始化仓储实现类,负责数据库表和索引的初始化以及默认菜单的创建。 +/// 实现 接口。 +/// public class InitializeRepository : IInitializeRepository { private readonly SqlSugarDbContext _dbContext; private readonly SqlSugarClient _db; + /// + /// 构造函数,注入 SqlSugarDbContext。 + /// + /// SqlSugar 数据库上下文,用于数据库操作。 public InitializeRepository(SqlSugarDbContext dbContext) { _dbContext = dbContext; _db = _dbContext.GetInstance(); } + /// + /// 初始化所有数据库表。 + /// 如果表不存在,则会创建。 + /// public void InitializeTables() { - _db.DbMaintenance.CreateDatabase(); + _db.DbMaintenance.CreateDatabase(); // 创建数据库(如果不存在) _db.CodeFirst.InitTables(); _db.CodeFirst.InitTables(); _db.CodeFirst.InitTables(); @@ -32,42 +44,64 @@ public class InitializeRepository : IInitializeRepository _db.CodeFirst.InitTables(); } + /// + /// 初始化数据库表索引。 + /// 为特定表的列创建唯一索引,以提高查询效率和数据完整性。 + /// public void InitializeTableIndex() { + // 为 DbDevice 表创建索引 _db.DbMaintenance.CreateIndex(nameof(DbDevice),new [] { nameof(DbDevice.Name), nameof(DbDevice.OpcUaServerUrl), },true); + // 为 DbVariable 表创建索引 _db.DbMaintenance.CreateIndex(nameof(DbVariable),new [] { nameof(DbVariable.OpcUaNodeId) },true); + // 为 DbMqttServer 表创建索引 _db.DbMaintenance.CreateIndex(nameof(DbMqttServer),new [] { nameof(DbMqttServer.ServerName) },true); } + /// + /// 检查数据库中是否存在指定的表。 + /// + /// 要检查的表名。 + /// 如果表存在则为 true,否则为 false。 public bool IsAnyTable(string tableName) { return _db.DbMaintenance.IsAnyTable(tableName, false); } + /// + /// 检查数据库中是否存在指定的索引。 + /// + /// 要检查的索引名。 + /// 如果索引存在则为 true,否则为 false。 public bool IsAnyIndex(string indexName) { return _db.DbMaintenance.IsAnyIndex(indexName); } + /// + /// 初始化默认菜单。 + /// 如果配置文件中没有菜单,则添加一组默认菜单项。 + /// public void InitializeMenus() { var settings = AppSettings.Load(); if (settings.Menus.Any()) { - return ; + return ; // 如果已经有菜单,则不进行初始化 } + // 添加默认菜单项 settings.Menus.Add(new MenuBean() { Id=1, Header = "主页", Icon = "Home", ParentId = 0 }); settings.Menus.Add(new MenuBean() { Id = 2, Header = "设备", Icon = "Devices3", ParentId = 0 }); settings.Menus.Add(new MenuBean() { Id = 3, Header = "数据转换", Icon = "ChromeSwitch", ParentId = 0 }); @@ -75,7 +109,7 @@ public class InitializeRepository : IInitializeRepository settings.Menus.Add(new MenuBean() { Id = 5, Header = "设置", Icon = "Settings", ParentId = 0 }); settings.Menus.Add(new MenuBean() { Id = 6, Header = "关于", Icon = "Info", ParentId = 0 }); - settings.Save(); + settings.Save(); // 保存菜单到配置文件 return ; } diff --git a/DMS.Infrastructure/Repositories/MenuRepository.cs b/DMS.Infrastructure/Repositories/MenuRepository.cs index a878834..f94da4e 100644 --- a/DMS.Infrastructure/Repositories/MenuRepository.cs +++ b/DMS.Infrastructure/Repositories/MenuRepository.cs @@ -9,17 +9,29 @@ using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; +/// +/// 菜单仓储实现类,负责菜单数据的持久化操作。 +/// 继承自 并实现 接口。 +/// public class MenuRepository : BaseRepository, IMenuRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public MenuRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { _mapper = mapper; } - + /// + /// 异步获取所有菜单树结构。 + /// + /// 包含所有菜单树结构的列表。 public async Task> GetMenuTreesAsync() { var stopwatch = new Stopwatch(); @@ -31,30 +43,57 @@ public class MenuRepository : BaseRepository, IMenuRepository return _mapper.Map>(dbMenuTree); } - + /// + /// 异步根据ID获取单个菜单。 + /// + /// 菜单的唯一标识符。 + /// 对应的菜单实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbMenu = await base.GetByIdAsync(id); return _mapper.Map(dbMenu); } + /// + /// 异步获取所有菜单。 + /// + /// 包含所有菜单实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步添加新菜单。 + /// + /// 要添加的菜单实体。 + /// 添加成功后的菜单实体(包含数据库生成的ID等信息)。 public async Task AddAsync(MenuBean entity) { var dbMenu = await base.AddAsync(_mapper.Map(entity)); return _mapper.Map(dbMenu, entity); } + /// + /// 异步更新现有菜单。 + /// + /// 要更新的菜单实体。 + /// 受影响的行数。 public async Task UpdateAsync(MenuBean entity) => await base.UpdateAsync(_mapper.Map(entity)); - + /// + /// 异步删除菜单。 + /// + /// 要删除的菜单实体。 + /// 受影响的行数。 public async Task DeleteAsync(MenuBean entity) => await base.DeleteAsync(_mapper.Map(entity)); + /// + /// 异步根据ID删除菜单。 + /// + /// 要删除菜单的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); @@ -66,6 +105,11 @@ public class MenuRepository : BaseRepository, IMenuRepository return result; } + /// + /// 异步根据菜单ID删除菜单树(包括子菜单)。 + /// + /// 要删除菜单树的根菜单ID。 + /// 受影响的行数。 public async Task DeleteMenuTreeByIdAsync(int id) { var stopwatch = new Stopwatch(); @@ -83,6 +127,12 @@ public class MenuRepository : BaseRepository, IMenuRepository return delConut; } + /// + /// 异步根据菜单类型和目标ID删除菜单树。 + /// + /// 菜单类型。 + /// 目标ID。 + /// 受影响的行数。 public async Task DeleteMenuTreeByTargetIdAsync(MenuType menuType, int targetId) { var stopwatch = new Stopwatch(); @@ -101,15 +151,26 @@ public class MenuRepository : BaseRepository, IMenuRepository return delConut; } + /// + /// 异步根据菜单类型和目标ID获取菜单。 + /// + /// 菜单类型。 + /// 目标ID。 + /// 对应的菜单实体,如果不存在则为null。 public async Task GetMenuByTargetIdAsync(MenuType menuType, int targetId) { var dbMenu = await Db.Queryable().FirstAsync(m => m.MenuType == menuType && m.TargetId == targetId); return _mapper.Map(dbMenu); } + /// + /// 异步获取指定数量的菜单。 + /// + /// 要获取的菜单数量。 + /// 包含指定数量菜单实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); return _mapper.Map>(dbList); } -} +} \ No newline at end of file diff --git a/DMS.Infrastructure/Repositories/MqttServerRepository.cs b/DMS.Infrastructure/Repositories/MqttServerRepository.cs index 4c57b35..0a9a95b 100644 --- a/DMS.Infrastructure/Repositories/MqttServerRepository.cs +++ b/DMS.Infrastructure/Repositories/MqttServerRepository.cs @@ -9,51 +9,91 @@ using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; /// -/// Mqtt仓储类,用于操作DbMqtt实体 +/// MQTT服务器仓储实现类,负责MQTT服务器数据的持久化操作。 +/// 继承自 并实现 接口。 /// public class MqttServerRepository : BaseRepository, IMqttServerRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public MqttServerRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { _mapper = mapper; } + /// + /// 异步根据ID获取单个MQTT服务器。 + /// + /// MQTT服务器的唯一标识符。 + /// 对应的MQTT服务器实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbMqttServer = await base.GetByIdAsync(id); return _mapper.Map(dbMqttServer); } + /// + /// 异步获取所有MQTT服务器。 + /// + /// 包含所有MQTT服务器实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步添加新MQTT服务器。 + /// + /// 要添加的MQTT服务器实体。 + /// 添加成功后的MQTT服务器实体(包含数据库生成的ID等信息)。 public async Task AddAsync(MqttServer entity) { var dbMqttServer = await base.AddAsync(_mapper.Map(entity)); return _mapper.Map(dbMqttServer, entity); } + /// + /// 异步更新现有MQTT服务器。 + /// + /// 要更新的MQTT服务器实体。 + /// 受影响的行数。 public async Task UpdateAsync(MqttServer entity) => await base.UpdateAsync(_mapper.Map(entity)); + /// + /// 异步删除MQTT服务器。 + /// + /// 要删除的MQTT服务器实体。 + /// 受影响的行数。 public async Task DeleteAsync(MqttServer entity) => await base.DeleteAsync(_mapper.Map(entity)); + /// + /// 异步根据ID删除MQTT服务器。 + /// + /// 要删除MQTT服务器的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); stopwatch.Start(); - var result = await Db.Deleteable(new MqttServer() { Id = id }) + var result = await Db.Deleteable(new DbMqttServer() { Id = id }) .ExecuteCommandAsync(); stopwatch.Stop(); - NlogHelper.Info($"Delete {typeof(MqttServer)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); + NlogHelper.Info($"Delete {typeof(DbMqttServer)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); return result; } + /// + /// 异步获取指定数量的MQTT服务器。 + /// + /// 要获取的MQTT服务器数量。 + /// 包含指定数量MQTT服务器实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); diff --git a/DMS.Infrastructure/Repositories/RepositoryManager.cs b/DMS.Infrastructure/Repositories/RepositoryManager.cs index 612cea6..fed073d 100644 --- a/DMS.Infrastructure/Repositories/RepositoryManager.cs +++ b/DMS.Infrastructure/Repositories/RepositoryManager.cs @@ -6,18 +6,29 @@ 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); @@ -29,23 +40,66 @@ public class RepositoryManager : IRepositoryManager 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(); } \ No newline at end of file diff --git a/DMS.Infrastructure/Repositories/UserRepository.cs b/DMS.Infrastructure/Repositories/UserRepository.cs index 8897a21..494e645 100644 --- a/DMS.Infrastructure/Repositories/UserRepository.cs +++ b/DMS.Infrastructure/Repositories/UserRepository.cs @@ -6,65 +6,97 @@ using DMS.Infrastructure.Data; using DMS.Infrastructure.Entities; -/// -/// 用户仓储类,用于操作DbUser实体 -/// using AutoMapper; using DMS.Core.Helper; -using DMS.Core.Interfaces; -using DMS.Core.Interfaces.Repositories; -using DMS.Core.Models; -using DMS.Infrastructure.Data; -using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; /// -/// 用户仓储类,用于操作DbUser实体 +/// 用户仓储实现类,负责用户数据的持久化操作。 +/// 继承自 并实现 接口。 /// public class UserRepository : BaseRepository, IUserRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public UserRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { _mapper = mapper; } + /// + /// 异步根据ID获取单个用户。 + /// + /// 用户的唯一标识符。 + /// 对应的用户实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbUser = await base.GetByIdAsync(id); return _mapper.Map(dbUser); } + /// + /// 异步获取所有用户。 + /// + /// 包含所有用户实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步添加新用户。 + /// + /// 要添加的用户实体。 + /// 添加成功后的用户实体(包含数据库生成的ID等信息)。 public async Task AddAsync(User entity) { var dbUser = await base.AddAsync(_mapper.Map(entity)); return _mapper.Map(dbUser, entity); } + /// + /// 异步更新现有用户。 + /// + /// 要更新的用户实体。 + /// 受影响的行数。 public async Task UpdateAsync(User entity) => await base.UpdateAsync(_mapper.Map(entity)); + /// + /// 异步删除用户。 + /// + /// 要删除的用户实体。 + /// 受影响的行数。 public async Task DeleteAsync(User entity) => await base.DeleteAsync(_mapper.Map(entity)); + /// + /// 异步根据ID删除用户。 + /// + /// 要删除用户的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); stopwatch.Start(); - var result = await Db.Deleteable(new User() { Id = id }) + var result = await Db.Deleteable(new DbUser() { Id = id }) .ExecuteCommandAsync(); stopwatch.Stop(); - NlogHelper.Info($"Delete {typeof(DbMenu)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); + NlogHelper.Info($"Delete {typeof(DbUser)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); return result; } + /// + /// 异步获取指定数量的用户。 + /// + /// 要获取的用户数量。 + /// 包含指定数量用户实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); diff --git a/DMS.Infrastructure/Repositories/VariableHistoryRepository.cs b/DMS.Infrastructure/Repositories/VariableHistoryRepository.cs index 519a128..24854e1 100644 --- a/DMS.Infrastructure/Repositories/VariableHistoryRepository.cs +++ b/DMS.Infrastructure/Repositories/VariableHistoryRepository.cs @@ -7,57 +7,95 @@ using DMS.Infrastructure.Entities; using AutoMapper; using DMS.Core.Helper; -using DMS.Core.Interfaces.Repositories; -using DMS.Core.Models; -using DMS.Infrastructure.Data; -using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; +/// +/// 变量历史仓储实现类,负责变量历史数据的持久化操作。 +/// 继承自 并实现 接口。 +/// public class VariableHistoryRepository : BaseRepository, IVariableHistoryRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public VariableHistoryRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { _mapper = mapper; } + /// + /// 异步根据ID获取单个变量历史记录。 + /// + /// 变量历史记录的唯一标识符。 + /// 对应的变量历史实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbVariableHistory = await base.GetByIdAsync(id); return _mapper.Map(dbVariableHistory); } + /// + /// 异步获取所有变量历史记录。 + /// + /// 包含所有变量历史实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步添加新变量历史记录。 + /// + /// 要添加的变量历史实体。 + /// 添加成功后的变量历史实体(包含数据库生成的ID等信息)。 public async Task AddAsync(VariableHistory entity) { var dbVariableHistory = await base.AddAsync(_mapper.Map(entity)); return _mapper.Map(dbVariableHistory, entity); } + /// + /// 异步更新现有变量历史记录。 + /// + /// 要更新的变量历史实体。 + /// 受影响的行数。 public async Task UpdateAsync(VariableHistory entity) => await base.UpdateAsync(_mapper.Map(entity)); + /// + /// 异步删除变量历史记录。 + /// + /// 要删除的变量历史实体。 + /// 受影响的行数。 public async Task DeleteAsync(VariableHistory entity) => await base.DeleteAsync(_mapper.Map(entity)); + /// + /// 异步根据ID删除变量历史记录。 + /// + /// 要删除变量历史记录的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); stopwatch.Start(); - var result = await Db.Deleteable(new Variable() { Id = id }) + var result = await Db.Deleteable(new DbVariableHistory() { Id = id }) .ExecuteCommandAsync(); stopwatch.Stop(); - NlogHelper.Info($"Delete {typeof(DbMenu)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); + NlogHelper.Info($"Delete {typeof(DbVariableHistory)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); return result; } - + /// + /// 异步获取指定数量的变量历史记录。 + /// + /// 要获取的变量历史记录数量。 + /// 包含指定数量变量历史实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); diff --git a/DMS.Infrastructure/Repositories/VariableMqttAliasRepository.cs b/DMS.Infrastructure/Repositories/VariableMqttAliasRepository.cs index 14deccf..7ce4310 100644 --- a/DMS.Infrastructure/Repositories/VariableMqttAliasRepository.cs +++ b/DMS.Infrastructure/Repositories/VariableMqttAliasRepository.cs @@ -4,64 +4,98 @@ using DMS.Infrastructure.Data; using DMS.Infrastructure.Entities; -/// -/// 变量与MQTT服务器别名关联的数据仓库。 -/// using AutoMapper; using DMS.Core.Helper; -using DMS.Core.Interfaces.Repositories; using DMS.Core.Models; -using DMS.Infrastructure.Data; -using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; /// -/// 变量与MQTT服务器别名关联的数据仓库。 +/// 变量与MQTT别名关联仓储实现类,负责变量与MQTT别名关联数据的持久化操作。 +/// 继承自 并实现 接口。 /// public class VariableMqttAliasRepository : BaseRepository, IVariableMqttAliasRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public VariableMqttAliasRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { _mapper = mapper; } + /// + /// 异步根据ID获取单个变量与MQTT别名关联。 + /// + /// 变量与MQTT别名关联的唯一标识符。 + /// 对应的变量与MQTT别名关联实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbVariableMqttAlias = await base.GetByIdAsync(id); return _mapper.Map(dbVariableMqttAlias); } + /// + /// 异步获取所有变量与MQTT别名关联。 + /// + /// 包含所有变量与MQTT别名关联实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步添加新变量与MQTT别名关联。 + /// + /// 要添加的变量与MQTT别名关联实体。 + /// 添加成功后的变量与MQTT别名关联实体(包含数据库生成的ID等信息)。 public async Task AddAsync(VariableMqttAlias entity) { var dbVariableMqttAlias = await base.AddAsync(_mapper.Map(entity)); return _mapper.Map(dbVariableMqttAlias, entity); } + /// + /// 异步更新现有变量与MQTT别名关联。 + /// + /// 要更新的变量与MQTT别名关联实体。 + /// 受影响的行数。 public async Task UpdateAsync(VariableMqttAlias entity) => await base.UpdateAsync(_mapper.Map(entity)); + /// + /// 异步删除变量与MQTT别名关联。 + /// + /// 要删除的变量与MQTT别名关联实体。 + /// 受影响的行数。 public async Task DeleteAsync(VariableMqttAlias entity) => await base.DeleteAsync(_mapper.Map(entity)); + /// + /// 异步根据ID删除变量与MQTT别名关联。 + /// + /// 要删除变量与MQTT别名关联的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); stopwatch.Start(); - var result = await Db.Deleteable(new VariableMqttAlias() { Id = id }) + var result = await Db.Deleteable(new DbVariableMqttAlias() { Id = id }) .ExecuteCommandAsync(); stopwatch.Stop(); - NlogHelper.Info($"Delete {typeof(DbMenu)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); + NlogHelper.Info($"Delete {typeof(DbVariableMqttAlias)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); return result; } + /// + /// 异步获取指定数量的变量与MQTT别名关联。 + /// + /// 要获取的变量与MQTT别名关联数量。 + /// 包含指定数量变量与MQTT别名关联实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); diff --git a/DMS.Infrastructure/Repositories/VariableRepository.cs b/DMS.Infrastructure/Repositories/VariableRepository.cs index c2a3d49..ded882c 100644 --- a/DMS.Infrastructure/Repositories/VariableRepository.cs +++ b/DMS.Infrastructure/Repositories/VariableRepository.cs @@ -9,12 +9,18 @@ using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; /// -/// VariableData仓储类,用于操作DbVariableData实体 +/// 变量仓储实现类,负责变量数据的持久化操作。 +/// 继承自 并实现 接口。 /// public class VariableRepository : BaseRepository, IVariableRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public VariableRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { @@ -24,7 +30,7 @@ public class VariableRepository : BaseRepository, IVariableRepositor /* /// - /// 为变量添加MQTT服务器关联,并指定别名。 + /// 为变量添加MQTT服务器关联,并指定别名。(此方法当前被注释,可能为待实现或废弃功能) /// /// /// 要添加MQTT服务器的变量数据列表。 @@ -104,40 +110,74 @@ public class VariableRepository : BaseRepository, IVariableRepositor } } */ + /// + /// 异步根据ID获取单个变量。 + /// + /// 变量的唯一标识符。 + /// 对应的变量实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbVariable = await base.GetByIdAsync(id); return _mapper.Map(dbVariable); } + /// + /// 异步获取所有变量。 + /// + /// 包含所有变量实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步添加新变量。 + /// + /// 要添加的变量实体。 + /// 添加成功后的变量实体(包含数据库生成的ID等信息)。 public async Task AddAsync(Variable entity) { var dbVariable = await base.AddAsync(_mapper.Map(entity)); return _mapper.Map(dbVariable, entity); } + /// + /// 异步更新现有变量。 + /// + /// 要更新的变量实体。 + /// 受影响的行数。 public async Task UpdateAsync(Variable entity) => await base.UpdateAsync(_mapper.Map(entity)); + /// + /// 异步删除变量。 + /// + /// 要删除的变量实体。 + /// 受影响的行数。 public async Task DeleteAsync(Variable entity) => await base.DeleteAsync(_mapper.Map(entity)); + /// + /// 异步根据ID删除变量。 + /// + /// 要删除变量的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); stopwatch.Start(); - var result = await Db.Deleteable(new Variable() { Id = id }) + var result = await Db.Deleteable(new DbVariable() { Id = id }) .ExecuteCommandAsync(); stopwatch.Stop(); - NlogHelper.Info($"Delete {typeof(DbMenu)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); + NlogHelper.Info($"Delete {typeof(DbVariable)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); return result; } + /// + /// 异步获取指定数量的变量。 + /// + /// 要获取的变量数量。 + /// 包含指定数量变量实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); diff --git a/DMS.Infrastructure/Repositories/VariableTableRepository.cs b/DMS.Infrastructure/Repositories/VariableTableRepository.cs index 489b3b7..a08d1b9 100644 --- a/DMS.Infrastructure/Repositories/VariableTableRepository.cs +++ b/DMS.Infrastructure/Repositories/VariableTableRepository.cs @@ -7,56 +7,95 @@ using DMS.Infrastructure.Entities; using AutoMapper; using DMS.Core.Helper; -using DMS.Core.Interfaces.Repositories; -using DMS.Core.Models; -using DMS.Infrastructure.Data; -using DMS.Infrastructure.Entities; namespace DMS.Infrastructure.Repositories; +/// +/// 变量表仓储实现类,负责变量表数据的持久化操作。 +/// 继承自 并实现 接口。 +/// public class VariableTableRepository : BaseRepository, IVariableTableRepository { private readonly IMapper _mapper; + /// + /// 构造函数,注入 AutoMapper 和 SqlSugarDbContext。 + /// + /// AutoMapper 实例,用于实体模型和数据库模型之间的映射。 + /// SqlSugar 数据库上下文,用于数据库操作。 public VariableTableRepository(IMapper mapper, SqlSugarDbContext dbContext) : base(dbContext) { _mapper = mapper; } + /// + /// 异步根据ID获取单个变量表。 + /// + /// 变量表的唯一标识符。 + /// 对应的变量表实体,如果不存在则为null。 public async Task GetByIdAsync(int id) { var dbVariableTable = await base.GetByIdAsync(id); return _mapper.Map(dbVariableTable); } + /// + /// 异步获取所有变量表。 + /// + /// 包含所有变量表实体的列表。 public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); return _mapper.Map>(dbList); } + /// + /// 异步添加新变量表。 + /// + /// 要添加的变量表实体。 + /// 添加成功后的变量表实体(包含数据库生成的ID等信息)。 public async Task AddAsync(VariableTable entity) { var dbVariableTable = await base.AddAsync(_mapper.Map(entity)); return _mapper.Map(dbVariableTable, entity); } + /// + /// 异步更新现有变量表。 + /// + /// 要更新的变量表实体。 + /// 受影响的行数。 public async Task UpdateAsync(VariableTable entity) => await base.UpdateAsync(_mapper.Map(entity)); + /// + /// 异步删除变量表。 + /// + /// 要删除的变量表实体。 + /// 受影响的行数。 public async Task DeleteAsync(VariableTable entity) => await base.DeleteAsync(_mapper.Map(entity)); + /// + /// 异步根据ID删除变量表。 + /// + /// 要删除变量表的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByIdAsync(int id) { var stopwatch = new Stopwatch(); stopwatch.Start(); - var result = await Db.Deleteable(new VariableTable() { Id = id }) + var result = await Db.Deleteable(new DbVariableTable() { Id = id }) .ExecuteCommandAsync(); stopwatch.Stop(); - NlogHelper.Info($"Delete {typeof(DbMenu)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); + NlogHelper.Info($"Delete {typeof(DbVariableTable)},ID={id},耗时:{stopwatch.ElapsedMilliseconds}ms"); return result; } + /// + /// 异步获取指定数量的变量表。 + /// + /// 要获取的变量表数量。 + /// 包含指定数量变量表实体的列表。 public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); @@ -64,6 +103,11 @@ public class VariableTableRepository : BaseRepository, IVariabl } + /// + /// 异步根据设备ID删除所有关联的变量表。 + /// + /// 设备的唯一标识符。 + /// 受影响的行数。 public async Task DeleteByDeviceIdAsync(int deviceId) { var stopwatch = new Stopwatch();