ABP 軟刪除ISoftDelete


一、簡介

  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;

            }
        }

        
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM