1

我有一个包含许多实体和关系的复杂模式。我想定义一个可以撤消的逻辑删除操作。我考虑过为每个表添加“isDeleted”标志,但对我来说似乎很容易出错。我还考虑添加一个类似于原始模式的存档模式,并在每个删除操作中将数据移动到那里。这似乎需要为“删除”和“取消删除”操作编写大量代码(尤其是因为我想模拟逻辑删除的删除级联)。

最后,我不确定在哪里处理我正在使用 EF 的逻辑删除事件,因此我可以在代码中执行此操作,或者我可以在他的 DB 中使用删除触发器。

我会欣赏有关如何以优雅的方式实现逻辑删除的任何建议。谢谢。

4

2 回答 2

4

我工作的每家公司都一直使用逻辑删除标志并通过代码进行管理。添加存档模式是一项巨大的开销,IMO 其增加的优雅(编码和性能方面)不值得付出额外的努力。

于 2013-03-02T06:25:45.247 回答
0

由于这是一个 OLTP 数据库,因此使用 IsDeleted 标志没有问题。如果您担心性能,我将继续使用 IsDeleted 标志并通过批处理而不是在线将其移动到存档。

我始终牢记一件事,以避免过度设计某些东西——除非它是一个问题,否则它不是问题。

于 2013-03-02T17:15:15.023 回答