级联删除,同一张表,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的主要内容,如果未能解决你的问题,请参考以下文章