一、简介
ABP 的软删除是为了,在删除的时候,不是真正的删除数据,是为了保护数据。
二、具体实现
在 Core 层,我们需要这个实体去实现这个 ISoftDelete 接口。实现它的 public virtual bool IsDeleted { get; set; } 方法即可。
namespace xxx.xxx.xxxxx { using Abp.Domain.Entities; /// <summary> /// 餐馆招聘 (Mg58Infos_RestaurantRecruitment) 实体 /// </summary> public partial class RestaurantRecruitment : BasicInfo, ISoftDelete { public bool IsDeleted { get; set; } } }
也可以实现 IFullAudited 方法,这个方法全一些。这个接口本身就继承了 ISoftDelete 接口。
namespace xx.xxx.xxx { using Abp.Domain.Entities.Auditing; using xx.xx.xx; using System; /// <summary> /// 餐馆招聘 (Mg58Infos_RestaurantRecruitment) 实体 /// </summary> public partial class RestaurantRecruitment : BasicInfo, IFullAudited { public long? LastModifierUserId { get; set ; } public DateTime? LastModificationTime { get ;set ; } public long? DeleterUserId { get; set; } public DateTime? DeletionTime { get ; set ; } public bool IsDeleted { get; set; } } }
更改以后需要更新数据库就可以了。
三、获取以删除的数据
获取以删除的数据,我们需要用到如下的方法。加上这using 在查询的时间,系统会过滤掉对 isdeleted 这个字段的筛选,从而获取所有的数据。
#pragma warning disable 1591 // Ignore "Missing XML Comment" warning namespace Bit.xx.xxxxxx { using Abp.AutoMapper; using Abp.Domain.Repositories; using xx.xx.Mg58Infos; using xx.x; using x.x.Mg58Accounts.Dto; using System.Threading.Tasks; using Abp.Domain.Uow; /// <summary> /// 餐馆招聘绑定 服务 /// </summary> public class RecruitmentBindUserAppService : AbpZeroTemplateAppServiceBase, IRecruitmentBindUserAppService { private readonly IRepository<RecruitmentBindUser, int> _recruitmentBindUserRepository; private readonly IRecruitmentBindUserManager _recruitmentBindUserManager; private readonly IRepository<RestaurantRecruitment, long> _restaurantRecruitmentRepository; private readonly IUnitOfWorkManager _unitOfWorkManager; public RecruitmentBindUserAppService( IUnitOfWorkManager unitOfWorkManager) { _unitOfWorkManager = unitOfWorkManager; } public async Task<RecruitmentBindUserEditDto> RecruitmentUserFilter(RecruitmentBindInfoFilterInput input) { using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.SoftDelete)) { //todo 此方法需要修改,获取发布的餐馆招聘数据将直接从单表获取 var recruitmentBindUser = await _recruitmentBindUserRepository.GetAsync(input.Id.Value); //todo 修改消息是否已读 var recruitmentInfo = _restaurantRecruitmentRepository.Get(recruitmentBindUser.RecruitmentId); var q = recruitmentBindUser.MapTo<RecruitmentBindUserEditDto>(); return q; } } } }