删除前检查参照完整性规则违规

在从表中删除行之前,有没有简单的方法来检查它是否会违反参照完整性规则? 我想使用SQL Server 2005从C#win表单应用程序(.Net 3.5)中执行此操作。

我想到了一些潜在的选择:

  • 在数据库中设置级联删除,以便删除始终成功。
  • 在删除之前用SELECT检查相关记录。 这要求应用程序了解约束。
  • 一个好的域模型(业务类)应该允许应用程序知道相关记录。
  • O / R Mapper(如NHibernate)可用于定义级联删除操作。
  • 使用SMO(Microsoft.SqlServer.Smo)检查数据库架构的关系,然后检查现有的相关记录。 我不知道这是否可能。

您可以在事务中执行删除操作:

try { begin transaction delete row } catch SQLException { if SQL error indicates referential integrity violation throw ReferentialIntegrityViolationException } finally { rollback transaction } 

(假设您从不希望在代码中的此处进行删除)