😎增加业务实体与文件关联时统一处理
This commit is contained in:
parent
61e79b6a51
commit
1af9fa56bc
@ -344,4 +344,44 @@ public class SysFileService : IDynamicApiController, ITransient
|
||||
}
|
||||
return sysFile;
|
||||
}
|
||||
|
||||
#region 统一实体与文件关联时,业务应用实体只需要定义一个SysFile集合导航属性,业务增加和更新、删除分别调用即可
|
||||
|
||||
/// <summary>
|
||||
/// 更新文件的业务数据Id
|
||||
/// </summary>
|
||||
/// <param name="dataId"></param>
|
||||
/// <param name="sysFiles"></param>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
public async Task UpdateFileByDataId(long dataId, List<SysFile> sysFiles)
|
||||
{
|
||||
var newFileIds = sysFiles.Select(u => u.Id).ToList();
|
||||
|
||||
// 求文件Id差集并删除(无效文件)
|
||||
var tmpFiles = await _sysFileRep.GetListAsync(u => u.DataId == dataId);
|
||||
var tmpFileIds = tmpFiles.Select(u => u.Id).ToList();
|
||||
var deleteFileIds = tmpFileIds.Except(newFileIds);
|
||||
foreach (var fileId in deleteFileIds)
|
||||
await DeleteFile(new DeleteFileInput() { Id = fileId });
|
||||
|
||||
await _sysFileRep.UpdateAsync(u => new SysFile() { DataId = dataId }, u => newFileIds.Contains(u.Id));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除业务数据对应的文件
|
||||
/// </summary>
|
||||
/// <param name="dataId"></param>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
public async Task DeteleFileByDataId(long dataId)
|
||||
{
|
||||
// 删除冗余无效的物理文件
|
||||
var tmpFiles = await _sysFileRep.GetListAsync(u => u.DataId == dataId);
|
||||
foreach (var file in tmpFiles)
|
||||
await _customFileProvider.DeleteFileAsync(file);
|
||||
await _sysFileRep.AsDeleteable().Where(u => u.DataId == dataId).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
#endregion 统一实体与文件关联时,业务应用实体只需要定义一个SysFile集合导航属性,业务增加和更新、删除分别调用即可
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user