在我的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)