我有一个包含许多权限和关系的复杂模式。我想定义一个可以撤消的逻辑删除操作。我考虑过为每个表添加'isDeleted'标志,但它似乎对我来说是错误的。 我还考虑添加一个类似于原始模式的归档模式,并在每个删除操作上移动数据。这似乎需要大量代码来编写“删除”和“取消删除”操作(特别是因为我想在删除casade上模拟逻辑delte。)
最后,我不确定在哪里处理逻辑删除事件 我正在使用EF,所以我可以在代码中执行,或者也许我可以在数据库中使用删除触发器。
我会以优雅的方式推荐有关如何实现逻辑删除的任何建议。感谢。
答案 0 :(得分:4)
我所工作的每家公司都使用逻辑删除标志并通过代码进行管理。添加归档架构是一个巨大的开销,IMO增加的优点(编码和性能方面)不值得额外的努力。
答案 1 :(得分:0)
由于这是一个OLTP数据库,因此使用IsDeleted标志时没有问题。如果您担心性能问题,我将继续使用IsDeleted标志并通过批处理将其移至归档,而非在线。
我总是记住一件事,以避免过度设计某些事情 - 除非这是一个问题,否则这不是问题。