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; }
} }
}
ABP 软删除ISoftDelete的更多相关文章
- LindDotNetCore~ISoftDelete软删除接口
回到目录 概念 ISoftDelete即软删除,数据在进行delete后不会从数据库清除,而只是标记一个状态,在业务范围里都不能获取到这个数据,这在ORM框架里还是比较容易实现的,对传统的ado来说需 ...
- DDD Code First 迁移数据实现EF CORE的软删除,值对象迁移配置
感谢Jeffcky大佬的博客: EntityFramework Core 2.0全局过滤 (HasQueryFilter) https://www.cnblogs.com/CreateMyself/p ...
- 深入理解 EF Core:使用查询过滤器实现数据软删除
原文:https://bit.ly/2Cy3J5f 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织 ...
- 在FreeSQL中实现「触发器」和软删除功能
前言 最近做新项目,技术栈 AspNetCore + FreeSQL 这个ORM真的好用,文档也很完善,这里记录一下两个有关「触发器」的功能实现 修改实体时记录更新时间 模型代码 我的模型都是基于这个 ...
- tp5 model 中的软删除
model中需use traits\model\SoftDelete; // 数据表中需添加一个 delete_time 字段保存删除时间 namespace app\index\model; use ...
- laravel框架总结(九) -- 软删除
当模型被软删除时,它们并不会真的从数据库中被移除.而是会在模型上设置一个 deleted_at 属性并将其添加到数据库.如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空. ...
- 软删除脏数据job笔记
某次处理一个case,发现线上库里有很多数据有问题.于是决定写一个job来将有问题的数据软删除掉.涉及到的两条SQL语句如下: <select id="loadTSKTVBillDai ...
- 关于Domino数据库的软删除
在Domino的数据库属性的 “高级” 附签(选择文件->数据库->属性),选中“允许软删除”,这样我们就启用了软删除功能,当一个文档没有删除的时候我们可以使用NotesDatabase的 ...
- Mysql软删除
所谓软删除(Soft Deleting),即在删除数据表中的数据时,并不直接将其从数据表中删除,而是将其标志为删除,即在每张表中设置一个删除字段(如:IsDeleted)等,默认情况下其值为0,及未删 ...
随机推荐
- The connection between feature spaces and smoothness is not obvious, and is one of the things we’ll discuss in the course.
http://www.gatsby.ucl.ac.uk/~gretton/coursefiles/lecture4_introToRKHS.pdf
- Grunt学习笔记【8】---- grunt-angular-templates插件详解
本文主要讲如何用Grunt打包AngularJS的模板HTML. 一 说明 AngularJS中使用单独HTML模板文件的地方非常多,例如:自定义指令.ng-include.templateUrl等. ...
- SQL 中GROUP BY 、ROLLUP、CUBE 关系和区别
转自:http://www.cnblogs.com/dyufei/archive/2009/11/12/2573974.html 不言自明,看SQL就完全理解了,不需要过多解释,不错,分享之: ROL ...
- MySQL修改配置 区分大小写
在使用mysql的时候,数据库名,表名,字段名等有大小写的区分,这个可以通过配置文件设置.如果设置了严格区分大小写,在访问表的时候没有注意到表名的大小写,将会报出表不存在的错误.下面是修改配置文件: ...
- (1366, "Incorrect string value: '\\xF3\\xB0\\x84\\xBC</...' for column 'content' at row 1")
插数据库报错 (1366, "Incorrect string value: '\\xF3\\xB0\\x84\\xBC</...' for column 'content' at r ...
- PAT 甲级 1116. Come on! Let's C (20) 【循环判断】
题目链接 https://www.patest.cn/contests/pat-a-practise/1116 思路 注意一个细节 如果没有本来 ID 的 后来又查了这个ID 不是输出 checked ...
- Spring Boot2.0之多数据源分布式事务问题
分布式事务解决方案的问题, 分布式事务产生的原因: 多个不同的服务连接不同的数据源 ,做分布式事务的管理. 这种情况是连接两个数据源的情况,然后事务管理器是这样的 只管理了test02的这端业务代码. ...
- 搭建LoadRunner中的场景(二) 集合点
Rendezvous: 这个单词来自于法语,军队集合的意思.LoadRunner中是指各虚拟用户在同一时刻完成指定的操作. 一. 集合点设置步骤 1. 在脚本中需要测试并发性能的操作之前加入集合点. ...
- hdu-5780 gcd(数学)
题目链接: gcd Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Pro ...
- Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包
0. Collections.synchronizedXxx() Java 中常用的集合框架中的实现类:HashSet/TreeSet.ArrayList/LinkedList.HashMap/Tre ...