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

时间:2016-08-20 04:17:10

标签: c# sql-server entity-framework

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

enter image description here

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

我也在使用Sql-Server 2012。

1 个答案:

答案 0 :(得分:0)

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

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