检查删除行是否安全

dre*_*rew 5 c# sql-server entity-framework sql-server-2008 asp.net-mvc-2

我希望能够检查从SQL Server 2008中的表中删除行是否会因外键违规而失败而不尝试删除它.

基本上,如果用户无法删除它,我不想向用户显示删除按钮,因为该密钥在其他地方使用.

我在应用程序的许多地方需要这个,所以不要真的想手动编写检查以查看删除行是否安全.有关实现这一目标的最佳方法的任何建议吗?

我正在使用实体框架来访问数据.

Don*_*nie 2

没有快速简便的方法来检查这一点。您可能可以使用 构建一些动态的东西information_schema,但它无疑会很难看并且速度不是很快。

绝对最好的选择是验证每个位置所需的几行自定义代码。

另一种选择是启动事务,尝试删除。如果失败了,你就知道了。如果成功,则回滚事务,并且您知道删除是可能的。这仍然很丑陋,并且以一种有点破坏的方式使用事务,但它会起作用。不过,请确保表的级联删除未启用。