当外键存在时删除 - 有没有办法获取违反外键(EF)的密钥的ID

时间:2012-12-09 16:35:18

标签: sql sql-server sql-server-2008 entity-framework-4 foreign-keys

我正在使用实体框架 我有桌子A& B in 1:n。
假设我在A中删除了很多行,而表A中的一个键行中有一行在表B中有一行或多行。

我使用以下文本

获取sqlException
 The DELETE statement conflicted with the REFERENCE constraint "FK_A_B". 
 The conflict occurred in database "DCDCommunity", table "Template.Template",  
 column 'ApplicationTypeID'.  The statement has been terminated.

有没有办法获取违反外键的密钥的ID。

重要编辑:

我知道我可以检查B是否有行 但这很容易出现持续性问题 (假设在检查后立即发出另一个插入请求。)

通过不检查并让数据库抛出异常我让他处理持久性(特别是在多台机器上运行时) 现在 - 如果我在SQL异常中只有更多数据,我只能依赖这种机制。

1 个答案:

答案 0 :(得分:1)

You cannot delete Rows from A (your primary key table) where there are related records in B (foreign table)。这违反了这种关系。因此,您需要first delete them from Bthen delete from A。或者你可以做ON DELETE CASCADE。请Check out this example here