我有以下情况:如何实现递归删除?
客户包含项目和项目包含许可证。 由于存档,我们不会删除任何内容,而是使用IsDeleted。 Otherweise我可以使用级联删除。
Owkay我与存储库模式工作,所以我打电话
customerRepository.Delete(customer);
但在这里开始的问题。客户被设置为true。但是,我想删除该客户的所有项目,每个被删除的项目也应该删除所有的许可证。
我想知道是否有适当的解决方案。 但它必须是高性能的。
请注意,这是实际问题的简单版本。一个客户也有网站,也与许可证链接,但我只是想简化你们的问题。
我正在使用sql server 2008作为数据库的C#环境中工作。
编辑:我使用的是企业单位库连接到数据库
是的,我认为触发是危险的。你可能会失去他们的踪迹。 – user29964 2009-12-10 09:39:48
是的。人们有时会“忘记”触发器也已经创建。 – RichardOD 2009-12-10 10:47:10
就我个人而言,我喜欢这个触发器的想法,因为它可以确保每次将记录设置为删除时,都会发生适当的其他更改。我认为通过应用程序代码来做这件事是不负责任的。它有风险有数据完整性问题。如果有人被意外删除,触发器也可以设置为通过所有子记录取消删除。 – HLGEM 2009-12-10 15:52:19