feature:给所有仓储类都添加批量更新方法

This commit is contained in:
2025-10-21 13:14:34 +08:00
parent 5a3242a90b
commit e995ec7207
17 changed files with 191 additions and 5 deletions

View File

@@ -39,6 +39,13 @@ public interface IBaseRepository<T> where T : class
/// <summary>
/// 异步批量更新实体。
/// </summary>
/// <param name="entities">要更新的实体列表。</param>
Task<int> UpdateAsync(List<T> entities);
/// <summary>
/// 异步根据实体列表批量删除实体。
/// </summary>

View File

@@ -151,6 +151,24 @@ public abstract class BaseRepository<TEntity>
/// <summary>
/// 异步批量更新实体。
/// </summary>
/// <param name="entities">要更新的实体列表。</param>
/// <returns>返回受影响的行数。</returns>
public virtual async Task<int> UpdateAsync(List<TEntity> entities)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
var result = await _dbContext.GetInstance().Updateable(entities)
.ExecuteCommandAsync();
stopwatch.Stop();
_logger.LogInformation($"UpdateAsync Batch {typeof(TEntity).Name}, Count: {entities.Count}, 耗时:{stopwatch.ElapsedMilliseconds}ms");
return result;
}
public async Task<List<TEntity>> AddAsync(List<TEntity> entities)
{
var stopwatch = new Stopwatch();
@@ -165,7 +183,6 @@ public abstract class BaseRepository<TEntity>
stopwatch.Stop();
_logger.LogInformation($"AddBatchAsync {typeof(TEntity).Name}耗时:{stopwatch.ElapsedMilliseconds}ms");
return retrunEntities;
}

View File

@@ -83,6 +83,18 @@ public class DeviceRepository : BaseRepository<DbDevice>, IDeviceRepository
return _mapper.Map<List<Device>>(addedEntities);
}
/// <summary>
/// 异步批量更新设备。
/// </summary>
/// <param name="entities">要更新的设备实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<Device> entities)
{
var dbEntities = _mapper.Map<List<DbDevice>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除设备。
/// </summary>

View File

@@ -133,6 +133,17 @@ namespace DMS.Infrastructure.Repositories
return _mapper.Map<List<EmailAccount>>(insertedEntities);
}
/// <summary>
/// 异步批量更新实体。
/// </summary>
public async Task<int> UpdateAsync(List<EmailAccount> entities)
{
var dbEntities = _mapper.Map<List<DbEmailAccount>>(entities);
return await Db.Updateable(dbEntities)
.ExecuteCommandAsync();
}
/// <summary>
/// 异步根据实体列表批量删除实体。
/// </summary>

View File

@@ -133,6 +133,17 @@ namespace DMS.Infrastructure.Repositories
return _mapper.Map<List<EmailLog>>(dbEntities);
}
/// <summary>
/// 异步批量更新实体。
/// </summary>
public async Task<int> UpdateAsync(List<EmailLog> entities)
{
var dbEntities = _mapper.Map<List<DbEmailLog>>(entities);
return await Db.Updateable(dbEntities)
.ExecuteCommandAsync();
}
/// <summary>
/// 异步根据实体列表批量删除实体。
/// </summary>

View File

@@ -132,6 +132,17 @@ namespace DMS.Infrastructure.Repositories
return _mapper.Map<List<EmailMessage>>(dbEntities);
}
/// <summary>
/// 异步批量更新实体。
/// </summary>
public async Task<int> UpdateAsync(List<EmailMessage> entities)
{
var dbEntities = _mapper.Map<List<DbEmailMessage>>(entities);
return await Db.Updateable(dbEntities)
.ExecuteCommandAsync();
}
/// <summary>
/// 异步根据实体列表批量删除实体。
/// </summary>

View File

@@ -132,6 +132,17 @@ namespace DMS.Infrastructure.Repositories
return _mapper.Map<List<EmailTemplate>>(dbEntities);
}
/// <summary>
/// 异步批量更新实体。
/// </summary>
public async Task<int> UpdateAsync(List<EmailTemplate> entities)
{
var dbEntities = _mapper.Map<List<DbEmailTemplate>>(entities);
return await Db.Updateable(dbEntities)
.ExecuteCommandAsync();
}
/// <summary>
/// 异步根据实体列表批量删除实体。
/// </summary>

View File

@@ -155,6 +155,18 @@ public class MenuRepository : BaseRepository<DbMenu>, IMenuRepository
return _mapper.Map<List<MenuBean>>(addedEntities);
}
/// <summary>
/// 异步批量更新菜单。
/// </summary>
/// <param name="entities">要更新的菜单实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<MenuBean> entities)
{
var dbEntities = _mapper.Map<List<DbMenu>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除菜单。
/// </summary>

View File

@@ -87,6 +87,18 @@ public class MqttAliasRepository : BaseRepository<DbMqttAlias>, IMqttAliasReposi
return _mapper.Map<List<MqttAlias>>(addedEntities);
}
/// <summary>
/// 异步批量更新变量与MQTT别名关联。
/// </summary>
/// <param name="entities">要更新的变量与MQTT别名关联实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<MqttAlias> entities)
{
var dbEntities = _mapper.Map<List<DbMqttAlias>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除变量与MQTT别名关联。
/// </summary>

View File

@@ -83,6 +83,18 @@ public class MqttServerRepository : BaseRepository<DbMqttServer>, IMqttServerRep
return _mapper.Map<List<MqttServer>>(addedEntities);
}
/// <summary>
/// 异步批量更新MQTT服务器。
/// </summary>
/// <param name="entities">要更新的MQTT服务器实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<MqttServer> entities)
{
var dbEntities = _mapper.Map<List<DbMqttServer>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除MQTT服务器。
/// </summary>

View File

@@ -117,6 +117,18 @@ public class NlogRepository : BaseRepository<DbNlog>, INlogRepository
return _mapper.Map<List<Core.Models.Nlog>>(addedEntities);
}
/// <summary>
/// 异步批量更新Nlog日志条目。
/// </summary>
/// <param name="entities">要更新的Nlog日志实体列表。</param>
/// <returns>受影响的行数。</returns>
public new async Task<int> UpdateAsync(List<Core.Models.Nlog> entities)
{
var dbEntities = _mapper.Map<List<DbNlog>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除Nlog日志条目。
/// </summary>

View File

@@ -95,6 +95,18 @@ namespace DMS.Infrastructure.Repositories
return _mapper.Map<List<Trigger>>(addedEntities);
}
/// <summary>
/// 异步批量更新触发器定义。
/// </summary>
/// <param name="entities">要更新的触发器定义实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<Trigger> entities)
{
var dbEntities = _mapper.Map<List<DbTrigger>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除触发器定义。
/// </summary>

View File

@@ -87,6 +87,18 @@ public class TriggerVariableRepository : BaseRepository<DbTriggerVariable>, ITri
return _mapper.Map<List<TriggerVariable>>(addedEntities);
}
/// <summary>
/// 异步批量更新触发器与变量关联。
/// </summary>
/// <param name="entities">要更新的触发器与变量关联实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<TriggerVariable> entities)
{
var dbEntities = _mapper.Map<List<DbTriggerVariable>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除触发器与变量关联。
/// </summary>

View File

@@ -76,8 +76,13 @@ public class UserRepository : BaseRepository<DbUser>, IUserRepository
/// <param name="entity">要删除的用户实体。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> DeleteAsync(User entity) => await base.DeleteAsync(new List<DbUser> { _mapper.Map<DbUser>(entity) });
public async Task<int> UpdateAsync(List<User> entities)
{
var dbEntities = _mapper.Map<List<DbUser>>(entities);
return await base.UpdateAsync(dbEntities);
}
public async Task<List<User>> AddAsync(List<User> entities)
{

View File

@@ -75,8 +75,13 @@ public class VariableHistoryRepository : BaseRepository<DbVariableHistory>, IVar
/// <param name="entity">要删除的变量历史实体。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> DeleteAsync(VariableHistory entity) => await base.DeleteAsync(new List<DbVariableHistory> { _mapper.Map<DbVariableHistory>(entity) });
public async Task<int> UpdateAsync(List<VariableHistory> entities)
{
var dbEntities = _mapper.Map<List<DbVariableHistory>>(entities);
return await base.UpdateAsync(dbEntities);
}
public async Task<List<VariableHistory>> AddAsync(List<VariableHistory> entities)
{

View File

@@ -144,6 +144,18 @@ public class VariableRepository : BaseRepository<DbVariable>, IVariableRepositor
return result;
}
/// <summary>
/// 异步批量更新变量。
/// </summary>
/// <param name="entities">要更新的变量实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<Variable> entities)
{
var dbEntities = _mapper.Map<List<DbVariable>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除变量。
/// </summary>

View File

@@ -108,6 +108,18 @@ public class VariableTableRepository : BaseRepository<DbVariableTable>, IVariabl
}
/// <summary>
/// 异步批量更新变量表。
/// </summary>
/// <param name="entities">要更新的变量表实体列表。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(List<VariableTable> entities)
{
var dbEntities = _mapper.Map<List<DbVariableTable>>(entities);
return await base.UpdateAsync(dbEntities);
}
/// <summary>
/// 异步根据实体列表批量删除变量表。
/// </summary>