一、簡介
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; } } } }