ABP 继承 ISoftDelete 后调用 HardDeleteAsync 实现物理删除

摘要:
如标题描述的一样,在继承ISoftDelete后希望进行物理删除操作时,调用HardDeleteAsync方法即可。

如标题描述的一样,在继承ISoftDelete 后希望进行物理删除操作时,调用HardDeleteAsync 方法即可。下面是该方法的内部实现:

public static async Task HardDeleteAsync<TEntity, TPrimaryKey>(this IRepository<TEntity, TPrimaryKey> repository, TEntity entity)
    where TEntity : class, IEntity<TPrimaryKey>, ISoftDelete
{
    var repo = ProxyHelper.UnProxy(repository) as IRepository<TEntity, TPrimaryKey>;
    if (repo == null)
    {
        throw new ArgumentException($"Given {nameof(repository)} is not inherited from {typeof(IRepository<TEntity, TPrimaryKey>).AssemblyQualifiedName}");
    }

    var items = ((IUnitOfWorkManagerAccessor)repo).UnitOfWorkManager.Current.Items;
    var hardDeleteEntities = items.GetOrAdd(UnitOfWorkExtensionDataTypes.HardDelete, () => new HashSet<string>()) as HashSet<string>;

    var tenantId = GetCurrentTenantIdOrNull(repo.GetIocResolver());
    var hardDeleteKey = EntityHelper.GetHardDeleteKey(entity, tenantId);

    hardDeleteEntities.Add(hardDeleteKey);

    await repo.DeleteAsync(entity);
}

免责声明:文章转载自《ABP 继承 ISoftDelete 后调用 HardDeleteAsync 实现物理删除》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇android中LitePal的使用LUA可变长参数 ... 三个点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JS原生请求的方法XHR对象

XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信。 最早,微软在IE 5引进了这个接口。因为它太有用,其他浏览器也模仿部署了,ajax操作因此得以诞生。 但是,这个接口一直没有标准化,每家浏览器的实现或多或少有点不同。HTML 5的概念形成后,W3C开始考虑标准化这个接口。2008年2月,就提出了XMLHtt...

关于DOM的操作以及性能优化问题-重绘重排

写在前面: 大家都知道DOM的操作很昂贵。  然后贵在什么地方呢? 一、访问DOM元素 二、修改DOM引起的重绘重排 一、访问DOM   像书上的比喻:把DOM和JavaScript(这里指ECMScript)各自想象为一个岛屿,它们之间用收费桥梁连接,ECMAScript每次访问DOM,都要途径这座桥,并交纳“过桥费”,访问DOM的次数越多,费用也就越高...

动态显示轮播图片

我指的动态是时时从数据库中取的数据,在页面上动态显示: 我用到的轮播插件是: carouFredSel  html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona...

那些H5用到的技术(4)——弹幕

前言思路实现模式无限循环模式时间线模式停止显示弹幕 前言 以前玩卷轴射击游戏的时候,大量的BOSS子弹让我们无路可逃的时候,让我见识到了真正弹幕的威力,可自从A站B站火了之后,大量评论留言参与到了视频的播放中,也让我见识到了“弹幕”的威力,压根视频就没法看了……全看评论去了,就是那么好玩。 现在没有弹幕功能都不好意思说是做视频or直播网站的。而...

使用docker私有化部署nuget server-proget

在linux上使用docker部署proget 首先创建共用网络proget docker network create proget 创建postgresql库 docker run -d -v /etc/localtime:/etc/localtime:ro -v /var/proget/db:/var/lib/postgresql/data --ne...

js 用blob来显示存储资源,并清除其他资源

HTML代码: <div class="demo"></div> JS代码: var eleAppend = document.getElementById("forAppend"); window.URL = window.URL || window.webkitURL; if (typeof history.pushSta...