我打算在每个表中使用像isActive
这样的布尔列并管理它的true/false
状态,而不是从数据库中删除条目。在不实际删除记录的情况下保持参照完整性
通常,当你从数据库中删除一条记录,
- 引用完整性得以保持,这意味着如果要删除其依赖关系之前,你不能删除它。
- 当您查询已删除的记录,则返回null
我如何能实现使用实体框架自动的方式相同的结果?因为手动检查每个查询中的每个实体的isActive字段看起来工作量太大,容易出错。对于将相关性标记为isActive=false
也是如此。
编辑:
我的目的并不局限于点即时查询。让我举个例子。 UserA发布了一张照片,UserB对此发表了评论。然后UserB想要删除他的帐户。但评论有它的海报FK指向UserB。因此,我不想删除UserB,而是要停用其帐户,但保留该记录以便不中断依赖关系。 我想将此逻辑扩展到数据库中的每个表。那是错的吗?
因此,你想避免空检查,而不是检查记录的属性,看它是否是活动的,这是空检查满足,因为你不喜欢参照完整性? –
如果您打算使用布尔列,那么您应该计划检查它。 –
@DarkBobG不,我不想从数据库中删除记录,只是将它们标记为已删除。但同时对这种删除状态强制执行某种参照完整性。它必须在应用程序中完成,但我想知道是否可以有自动化解决方案。 –