一、简介

  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; }
} }
}

ABP 软删除ISoftDelete的更多相关文章

  1. LindDotNetCore~ISoftDelete软删除接口

    回到目录 概念 ISoftDelete即软删除,数据在进行delete后不会从数据库清除,而只是标记一个状态,在业务范围里都不能获取到这个数据,这在ORM框架里还是比较容易实现的,对传统的ado来说需 ...

  2. DDD Code First 迁移数据实现EF CORE的软删除,值对象迁移配置

    感谢Jeffcky大佬的博客: EntityFramework Core 2.0全局过滤 (HasQueryFilter) https://www.cnblogs.com/CreateMyself/p ...

  3. 深入理解 EF Core:使用查询过滤器实现数据软删除

    原文:https://bit.ly/2Cy3J5f 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织 ...

  4. 在FreeSQL中实现「触发器」和软删除功能

    前言 最近做新项目,技术栈 AspNetCore + FreeSQL 这个ORM真的好用,文档也很完善,这里记录一下两个有关「触发器」的功能实现 修改实体时记录更新时间 模型代码 我的模型都是基于这个 ...

  5. tp5 model 中的软删除

    model中需use traits\model\SoftDelete; // 数据表中需添加一个 delete_time 字段保存删除时间 namespace app\index\model; use ...

  6. laravel框架总结(九) -- 软删除

    当模型被软删除时,它们并不会真的从数据库中被移除.而是会在模型上设置一个 deleted_at 属性并将其添加到数据库.如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空. ...

  7. 软删除脏数据job笔记

    某次处理一个case,发现线上库里有很多数据有问题.于是决定写一个job来将有问题的数据软删除掉.涉及到的两条SQL语句如下: <select id="loadTSKTVBillDai ...

  8. 关于Domino数据库的软删除

    在Domino的数据库属性的 “高级” 附签(选择文件->数据库->属性),选中“允许软删除”,这样我们就启用了软删除功能,当一个文档没有删除的时候我们可以使用NotesDatabase的 ...

  9. Mysql软删除

    所谓软删除(Soft Deleting),即在删除数据表中的数据时,并不直接将其从数据表中删除,而是将其标志为删除,即在每张表中设置一个删除字段(如:IsDeleted)等,默认情况下其值为0,及未删 ...

随机推荐

  1. 如何在MySQL中分配innodb_buffer_pool_size

    如何在MySQL中分配innodb_buffer_pool_size innodb_buffer_pool_size是整个MySQL服务器最重要的变量. 1. 为什么需要innodb buffer p ...

  2. CF(439E - Devu and Birthday Celebration)莫比乌斯容斥

    题意:将n个糖果插入f-1个挡板分成f分(a1,a2,a3...af). 问有多少种分法能够使得gcd(a1,a2,a3...af)=1; 解法.莫比乌斯容斥,首先按1为单位分,这时候有C(n-1,f ...

  3. 扫盲--.net 程序集

    前言:用了几天的时间把高级编程里面程序集一章看完了,原来自己只知道写代码,右键添加引用,从来也不知道操作的实质是什么,微软总是这个套路,鼠标点点就能把任务完成,这对新手友好但是对要通透了解程序执行和内 ...

  4. Tomcat 开启远程调试

    根据 Tomcat 启动方式在 catalina.sh 或者 startup.sh 添加一下内容 $TOMCAT_HOME/bin/catalina.sh 添加 CATALINA_OPTS=" ...

  5. poj2965 The Pilots Brothers' refrigerator —— 技巧性

    题目链接:http://poj.org/problem?id=2965 题解:自己想到的方法是枚举搜索,结果用bfs和dfs写都超时了.网上拿别人的代码试一下只是刚好不超时的,如果自己的代码在某些方面 ...

  6. SGU 495 Kids and Prizes:期望dp / 概率dp / 推公式

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=495 题意: 有n个礼物盒,m个人. 最开始每个礼物盒中都有一个礼物. m个人依次随 ...

  7. rand()与srand()

    1.不用srand()的话 两次运行程序产生的随机数序列相同 2.用srand() 两次运行程序产生的随机数则不同 示例程序: #include<iostream> #include< ...

  8. mvn使用记录

    1. mvn dependency:copy-dependencies 会导出到targed/dependency 下面 2. mvn dependency:copy-dependencies -Do ...

  9. logback备注

    <?xmlversion="1.0"encoding="UTF-8"?> <!-- <configuration>包含的属性 sc ...

  10. exec 和 spawn 的区别

    参考资料: difference-between-spawn-and-exec-of-node-js-child_process process_child 最近在用nodejs 的child_pro ...