删除Cascade而不显式引用所有依赖项

时间:2011-10-25 14:32:43

标签: c# sql-server tsql nhibernate cascading-deletes

我正在为QA sql server数据库构建一个小的db-cleaner应用程序。当然,我需要删除具有依赖关系的表行。

T-SQL级联功能非常有限,所以我尝试使用NHibernate来简化问题。但是,我找到的唯一方法是为每个依赖项创建一个集合 在object-to-delete中,并将其标记为cascade = delete。

这意味着创建许多很多集合(在hbm文件和C#对象中),我不需要用于任何其他目的。这使得这个方法像使用SQL一样复杂。

我错过了什么吗?是否有更简单,更通用的方法来执行delete-cascade?

感谢。

编辑:为了清楚起见,我避免更改数据库中的外键,因为它是一个QA数据库,设计与生产数据库相同。

2 个答案:

答案 0 :(得分:0)

最终我找到了一种删除的通用方法:

这个人写了一个递归SP,为你完成所有工作:

http://www.sqlteam.com/article/performing-a-cascade-delete-in-sql-server-7

需要一些修饰(因为我的数据库使用模式),但工作就像一个魅力。

答案 1 :(得分:0)

我想你在数据库中的相关表之间定义了外键? 您可以在外键级别指定在删除父记录时相关记录应该发生什么 查看MSDN的级联选项,以及如何定义它们:

Cascading FK constraints

Foreign Key Constraints