0

我有两张桌子。这些是设计和喜欢。一个设计可以有很多赞,一个赞应该与一个设计相关。

当我尝试删除设计时,它会抛出一个异常:

DELETE 语句与 REFERENCE 约束“FK_dbo.DesignLike_dbo.Design_DesignId”冲突。冲突发生在数据库“XXXDB”、表“dbo.DesignLike”、列“DesignId”中。该语句已终止。

modelBuilder.Entity().HasMany(x => x.Likes).WithRequired(x => x.Design).WillCascadeOnDelete(false);

我什至不尝试删除相关实体?为什么我得到这个异常?

4

2 回答 2

2

您正在尝试删除仍具有子对象的对象。子对象上的外键会给你这个异常。

在删除当前对象之前,您应该解耦子对象,将它们链接到另一个父对象。或者将它们包含在级联删除中。

在您的情况下,您尝试删除的设计至少有一个类似的外键设置为您的设计的 id。当您现在删除设计并且级联关闭时,它将违反您喜欢的外键约束。

于 2013-07-03T09:13:59.133 回答
0

听起来您已经将数据库设置为对表DesignId中的列强制执行有效的外键约束DesignLike

如果您尝试删除 a Design,您将删除DesignId所有DesignLikes作为外键引用的 。如果你被允许这样做,你会发现你的数据库处于不一致的状态——如果不能保证它引用有效记录,你的外键就没有真正的意义。

您可以从您的子对象中删除现在无效的外键,或者如果Deleted您希望保留和对应VisibleDesignDesignDesignLikes

于 2013-07-03T09:20:50.763 回答