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();