实体框架级联删除自引用表中的父行

时间:2012-02-29 16:08:19

标签: entity-framework parent-child cascade self-reference

在我的MS SQL Server 2008数据库中,我有自引用的表,其中包含层次结构的类别(ID和ParentID)。表具有自我外键约束和“而不是删除”触发器,以执行删除其子节点的完整节点。

管理我正在使用Entity Framework(4.3)的数据,使用从自动跟踪实体和ObjectContext(由VS模板生成)的DB生成的模型。 EDM还在“类别”实体上具有自引用关联。

尝试删除任何至少有一个子行的父行时,我遇到了问题。

我打电话后:

Entity.MarkAsDeleted();
Context.SaveChanges();

在SQL Server Profiler中,我看到EF首先生成一个更新语句,将子行的ParentID设置为null,然后删除父行!当然,DB中的级联规则不起作用,子节点仍然保留在EF上下文和DB中。

我尝试将关联规则“On delete”设置为“Cascade”和“None”但是没有意义......

如何在EF自引用表中执行级联删除,或者至少如何防止EF更新子行的父ID?

PS:here I found exactly the same problem without answer (MSDN)

0 个答案:

没有答案