问题标签 [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.
nhibernate - Nhibernate Session.Get 和 Session.CreateCriteria 的区别
Nhibernate Session.Get 和 Session.CreateCriteria 有什么区别?
我的故事是:
在我们的产品中,我们通过添加接口 ISoftDeletable 来实现 softDeletion,实现该接口的每个类都有 deletedDate 和 deletedBy 字段。我们还有 AuditableEntity 类,这意味着实现它的每个类都有:createdDate、createdBy、modifiedDate、modifiedBy。
以下是来源:
我们还覆盖了 Session.Get 方法。
现在,在某些上下文中,应用程序在 softDeletable 和可审计实体的 Get 方法中引发了 StackOverflow 异常。经过一番调查,我注意到它在 PrepareEntityForUpdate/securityContextService.GetLoggedUser 和来自我们自定义存储库的 Get 方法之间创建了一个循环。正如你所看到的,我已经评论了 DeletedDate 的限制,这意味着 Session.Get(id) 应该返回与创建的条件相同的结果。但是如果我通过 this.Session.CreateCriteria(typeof(T)) 我得到 StackOverflow 异常,如果我评论这个并且只留下返回 Session.Get(id) (不考虑删除日期)一切正常。
这让我认为 Session.Get 和 Session.CreateCriteria 的工作方式不同。有任何想法吗?
php - Propel 是否知道对象何时被软删除,以便子实体仍然可以显示其已删除的父对象?
我正在软删除 MySQL 数据库中的对象并使用 Propel ORM。我已经开始进行软删除,但代价是失去了强制的父子关系,因为实际的行没有被删除。
Propel 有什么方法可以在访问时知道记录已被软删除,从而不会引发空引用异常?这样,虽然一个父级已经被删除,它的子级仍然可以读取它的关系,但是当更新一个子级,或者创建一个新的子级时,被删除的父级是不可访问的。
例如,
Book有一个AuthorId,如果属于AuthorId的作者被软删除,那么:
将返回正确的作者(仅供查看)。但是,如果添加了新书,则无法选择被软删除的作者。
有人知道这个功能是否内置在 Propel 中吗?
wpf - WPF:软删除和绑定?
我有实现 INotifyProperyChanged 的自定义对象,现在我想知道是否可以实现软删除,这将与绑定很好地配合?每个对象都有一个 IsDeleted 属性,如果此属性设置为 true,则它不会显示在 GUI 中。我正在考虑制作一个自定义标记扩展来装饰 Binding 类,但它没有按预期工作。现在我正在考虑使用带有 IsDeleted 的 MultiBinding 作为绑定属性之一,以便转换器能够确定哪个对象被删除。但是这个解决方案听起来相当复杂和无聊。
有人知道如何为绑定实现软删除吗?
sql - 软删除是个好主意吗?
软删除是好主意还是坏主意?
无需实际删除数据库中的记录,您只需将其标记为IsDeleted = true
,并且在恢复记录后,您可以将其标记为False
。
这是一个好主意吗?
物理删除记录,然后将其移动到存档数据库,如果用户想要恢复记录,那么软件将在存档中查找记录并重新创建它是不是更好?
c# - LINQ to SQL:使用软删除过滤嵌套对象
我在我的数据库(IsDeleted
字段)中使用软删除。我正在积极使用LoadWith
和AssociateWith
方法来检索和过滤嵌套记录。
这件事AssociateWith
只适用于代表一对多关系的属性。
在上面的示例中,我只是说:我想检索具有相关(未删除)角色的用户。
但是当我有一对一的关系时,例如Document
-> File
(唯一一个文件与文档相关)我无法过滤软删除对象:
那么,是否有任何想法如何过滤一对一关系中的记录?
谢谢!
java - Hibernate:如何仅获取非逻辑删除的对象
几乎我们数据库中的每个表都有一个审计表的 FK,该表记录创建、更新和删除状态(日期和用户名)。
我们将审计表映射到 Auditing 类并像这样使用它:
如您所料,几乎每个实体都从 BusinessObject 扩展而来。
有没有一种简单的说法,对于每个业务对象,只接收“auditing.deleted is null”。
我尝试在 businessObject 中添加 @Where 和 @WhereJoinTable ,但这似乎不像我预期的那样工作。
目前,我已经对我的一个查询执行了此操作,并且此操作有效,但我不想对所有查询执行此操作,因为我们有大约 150 个查询。
ruby-on-rails - rails_acts_as_paranoid 软删除多对多关系的记录
大家好,我有用户和消息,消息可以被接收者和发送者删除,而不会影响彼此的视图。
因此,当发件人删除消息时,收件人仍然可以看到它,希望我很清楚。
我只想添加两个属性,sender_archived_at 和receiver_archived_at,但我宁愿用rails_acts_as_paranoid 来管理它,这可能吗?如何?
提前致谢
cakephp - CakePHP 1.3 替代 SoftDeletable 行为?
有谁知道与Cake 1.3.x兼容的SoftDeletable Behavior的替代方法?
如果没有任何现成的行为可用,关于我如何在最新的 Cake 中执行此操作的任何建议?
想出了一个快速的技巧。首先,如果您的表引入了一个名为deleted默认为0的tinyint(1) 无符号字段。
在app/app_model.php中,添加以下函数:
然后从控制器的方法(执行删除)调用,
Catch 是,无论您在哪里执行find(),都需要指定条件deleted != 1。
仍在试图弄清楚如何以与 SoftDeletable 行为相同的方式实现这一点。
sql-server-2005 - 将“软删除”添加到现有系统
我有一个系统,其中包含很多存储过程,TableA
例如运行的函数。我们需要一种能够删除这些订单的方法,同时将它们记录在案。
我们考虑过的一个选项是在其中添加一个Delete
字段,TableA
然后通过所有的存储过程和函数添加:
我们考虑的另一个选项是创建一个视图,称为v_TableA
then 遍历并更改所有存储过程和函数以从该视图读取,而不是从表中读取。
两者都涉及大量工作,并且在将来对系统进行更改时需要记住。
我希望有更好的方法来做到这一点:
但我知道这是不可能的。任何帮助将非常感激。
php - 软删除最佳实践 (PHP/MySQL)
问题
在处理产品和订单的 Web 应用程序中,我想维护前雇员(用户)与他们处理的订单之间的信息和关系。我想维护过时产品和包含这些产品的订单之间的信息和关系。
但是,我希望员工能够整理管理界面,例如删除前员工、过时的产品、过时的产品组等。
我正在考虑实施软删除。那么,通常如何做到这一点呢?
我的直接想法
flag_softdeleted
我的第一个想法是在每个应该软删除的对象表中粘贴一个“ TINYINT NOT NULL DEFAULT 0”列。或者也许改用时间戳?
然后,我在每个相关的 GUI 中提供了一个“显示已删除”或“取消删除”按钮。单击此按钮,您将在结果中包含软删除的记录。每条删除的记录都有一个“恢复”按钮。这有意义吗?
你的意见?
另外,我很感激任何指向相关资源的链接。