问题标签 [soft-delete]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2338 浏览

xpages - 如果使用 exlib 中的动态内容控件软删除 url 哈希 unid 文档,则重定向到另一个页面

我在 extlib 中使用动态内容控制。这个控件的一个很好的特性是它自动从 url 中的 documentId 连接数据源,如下所示:

“...#content=doc&action=openDocument&documentId=C0282D5F7AF66787C1257ACF0028FD3A”

如果应用程序中存在unid,它将数据源连接到它。(除非设置了 ignoreRequestParameters)

我的问题是我正在使用自己的软删除功能,我在文档上设置了一个字段,如果某些用户将其删除,它将从基于该字段的视图中排除。

但是 dyn 内容控件不关心文档是否在视图中,如果文档存在于应用程序中,它将连接到数据源

所以如果文档被软删除,我需要找到一种不加载数据源并将用户重定向到另一个地方的方法。可能的?

请注意:unid 显示在 url 哈希后面,因此无法使用 SSJS 访问。

//托马斯

0 投票
1 回答
216 浏览

c# - SQL Server 2008 中的 C#、实体框架和删除子寄存器

我知道在 SQL Server 中,当我删除表中的父行时,我可以在级联上使用 delete,但在某些地方,我读到最好在应用程序(存储库)中实现此逻辑,而不是在 SQL Server 中级联删除。

所以我有两个问题。首先,如果我在 SQL Server 中不使用删除级联,如何使用 Entity Framework 解决这种情况。

  1. 用户 A 将父寄存器及其子寄存器添加到上下文中
  2. 用户 B 将一个新的孩子添加到父寄存器。所以用户 A 在上下文中没有这个孩子
  3. 用户 A 删除其上下文中加载的父级和所有子级。这些孩子不包括用户 B 添加的新孩子。

好吧,在实践中,没有问题,当用户A试图删除父级时,存在引用完整性异常,需要加载其所有子级并重试。

这对于 SQL Server 来说是一项额外的工作,因为它需要再次将所有寄存器发送给用户 A。

如果我在 SQL Server 中对级联使用 delete,则不存在此问题,因此我认为是一个不错的选择。

所以我的第二个问题是,在 SQL Server(或其他数据库)中使用删除级联是一个好主意,还是在业务逻辑(存储库)中实现这种情况更好?

谢谢。

0 投票
1 回答
1086 浏览

c# - 使用流畅的休眠和额外的延迟加载软删除

覆盖 DefaultDeleteEventListener 和 DefaultLoadEventListener 为使用 Nhibernate 实现软可删除提供了一个非常好的解决方案。

正如 DefaultLoadEventListener 状态的摘要: 定义 NHibernate 用于加载实体以响应生成的加载事件的默认加载事件侦听器。

这意味着在执行 ExtraLazyLoading 时不应用过滤器,这会导致例如:已删除的实体被计数。是否有另一种方法可以在查询期间应用软可删除过滤器?有没有更好的方法,然后总是手动过滤添加限制?

0 投票
2 回答
1043 浏览

ruby-on-rails - 将已删除的范围与设计身份验证一起使用

我正在使用 Devise 处理 Rails 应用程序中的身份验证,并且正在使用 Permanent_records 软删除用户。我的 User 模型的默认范围是未删除的用户。如果用户删除(停用)他的帐户,我希望他能够通过登录重新激活他的帐户,类似于 Facebook 的做法。问题是,由于 Devise 不知道查找已删除的用户,因此找不到帐户。我考虑过覆盖 session#create 方法

但由于这是由 Warden 处理的,看来我很不走运。我担心如果我开始挖得太深,我会开始破坏东西。

有任何想法吗?

谢谢!

0 投票
0 回答
587 浏览

php - 软删除。从加入表中更新多个“deleteAttribute”?

我已经按照博客文章在 yii 中实现软删除行为并且效果很好。

这是一些片段:

如何deleteAttribute使用加入表更新多个SoftDeleteBehavior

0 投票
1 回答
1423 浏览

nhibernate - 使用 Fluent NHibernate 过滤软删除的数据

我正在尝试使用 Fluent NHibernate 在我的应用程序中实现简单的软删除。所有实体都有一个布尔标志IsDeleted,删除操作只会将此属性设置为 true。我正在努力查询相互引用的更复杂的实体,例如通过多对多关系。假设我有Person一个实体,有一个集合Project

现在想象Personp 有Projects proj1 和 proj2。如果 proj1 被软删除,我们只需将其IsDeleted属性设置为 true。但是,当我访问 p 的项目时,collection 也会自动延迟加载 proj1,与它的标志无关。当然,我总是可以过滤集合,例如按Projects.Where(x => !x.Isdeleted),但这会导致重复代码容易出现错误。我想将这种数据杂耍从我的表示层中分离出来。

我想通过一些全局规则来自动化这个过程,说“只加载IsDeleted设置为 false 的实体”,这适用于所有查询和延迟加载的集合。

我试过的:

  • 覆盖事件,但我无法拦截所有数据库读取并过滤所有读取的实体。
  • 过滤器,我无法使用延迟加载的集合。

您会推荐什么,在没有代码重复且易于与表示层分离的情况下实现软删除的最简单方法是什么?

0 投票
2 回答
2457 浏览

php - Symfony2 SoftDeleteable 不适用于 QueryBuilder 删除

Softdelete 行为在通过实体管理器执行删除语句时正常工作,如下代码:

但是当通过 QueryBuilder 执行相同的功能时,硬删除将在数据库上执行

如何在所有情况下通过实体管理器或查询生成器允许软删除

0 投票
6 回答
51554 浏览

laravel - 为什么软删除的实体会出现在查询结果中?

我正在尝试实现软删除概念。

这是我的对象:

软删除已开启。

现在,如果我“删除”一个帖子,它会得到一个“deleted_at”时间戳:

描述

问题是,当我搜索或仅用于all()显示帖子时,软删除的项目会出现在那里。怎么了?

0 投票
1 回答
1045 浏览

php - 在主表中软删除时如何关闭数据透视删除?

我在 Laravel 的 Eloquent ORM 中有Users一张桌子。Groups一个组中可以有多个用户,一个用户可以在多个组中,所以我使用数据透视表来实现多对多的关系。实际上,这种关系不是多对多的,因为每个用户只能属于一个组,但系统就是这样设计的。我软删除表中的行,Users因此如果需要,我可以稍后恢复用户。

问题是当我删除一个用户时,系统也会自动删除数据透视表中的条目。这始终是一个条目。我没有将它设置为这样,只是将 protected $softDelete = true;线添加到Users模型中,所以我不明白为什么系统会自动删除数据透视条目。

我不想软删除数据透视条目,我只想软删除用户,并且系统不应该触及其他任何东西。
我可以创建自己的删除函数,将deleted_at变量设置为实际时间,但这样我不能简单地通过更改为true来关闭软删除,false如果我需要的话。

为什么系统会自动删除数据透视条目,如何关闭此行为?

0 投票
1 回答
960 浏览

php - Symfony 1.4- Doctrine Soft Delete Functionality

I want to override "soft delete" functionality in symfony 1.4-Doctrine ORM.

I got the file path: lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/SoftDelete.php

But i am not able to override the same file to change the functionality.