级联删除,同一张表,Entity Framework 4 Code First

Posted

技术标签:

【中文标题】级联删除,同一张表,Entity Framework 4 Code First【英文标题】:Cascade Delete, same table, Entity Framework 4 Code First 【发布时间】:2011-02-08 04:40:23 【问题描述】:

您好,我目前正在使用 .sdf 数据库(Server Compact 版本 4.0)和 sql express。我正在尝试在同一个表(类别 - 子类别)上设置级联删除,但我知道我无法将关系添加到同一个表。

外键约束具有和 更新或删除级联规则,以及 自引用同一列中的列 表,不允许

对此我能做些什么?

编辑 只有我有这个问题?

【问题讨论】:

【参考方案1】:

正如您的 SQLException 所建议的,这通常是 SQL Server 的限制,与 EF 或 Code First 无关。基本上,SQL Server 不允许在内部关系上创建级联操作——当级联路径从表 A 中的列 col1 到表 A 中的列 col2 时。A->A。

事实上,Code First 试图使用Declarative Referential Integrity (DRI) 来强制级联删除和 SQL Server 抛出。

对此关系强制执行级联删除的唯一方法是使用触发器。您可以在类别表上编写删除触发器,以删除相关行或将所有对应的外键设置为 NULL(根据您的要求)。

【讨论】:

以上是关于级联删除,同一张表,Entity Framework 4 Code First的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Xodus DNQ级联删除最后一个链接的项目

EF 级联删除

关于数据的级联删除和更新

休眠删除不会级联

Java Spring级联元素集合删除

hibernate---级联保存级联删除