如何知道哪个表阻止我删除具有Entity Framework 6的行?

Mas*_*ani 5 c# sql-server entity-framework

我在我的项目中使用EF 6,当我想从表中删除一行时,它会抛出异常,因为该行在另一个表中被引用.我想知道哪个表阻止我用c#代码和EF删除.

在此输入图像描述

我们在表A中有一条记录,该表在表C中引用而不在表B中引用.是否可以通过EF知道表C阻止我删除该行?

我也在使用Sql-Server 2012.

SMM*_*SMM 0

如果您尝试在运行时动态排序以向用户显示或在删除尝试之前确定,并且您不确定可能的冲突,则可以使用 sys 表和一些动态 sql 来解决此问题。

  1. 用于sys.objects查找您的表名称并获取 object_id。
  2. 用于sys.foreign_keys查找引用您的表的表。
  3. 使用系统。foreign_key_columns获取引用的确切列号。
  4. 用于sys.columns获取适当的列名称。
  5. 构建动态 SQL 来搜索表和列名称,并使用源行中无法删除的值查找有问题的行。
  6. 列出在 中查找返回的表sys.objects。(可选)列出行数。
  7. 可以选择使用动态 SQL 来构建其他语句(例如,删除违规记录 - 这可能需要递归 -请注意这一点 - 您可能会丢失大量数据!