SQL Server“在表上删除可能会导致循环或多个级联路径”

时间:2010-07-14 11:55:15

标签: entity-framework sql-server-2008

我们有带有EntityFramework映射的ASP.NET MVC2项目。alt text http://www.freeimagehosting.net/uploads/552e05f607.jpg

如何使用Structure表中的级联删除行从Customer表中删除行(Customer表具有“零或一 - 多”与其自身的关联以及级联删除子项{{ 1}})?

1 个答案:

答案 0 :(得分:1)

Cascading Deletes是我一直远离的东西。这是一个很酷的概念,但我还没有看到严重的Cascading Deletes实现。

阅读了我的咆哮,请继续阅读..

执行delete语句时,SQL Server首先标识所有必须删除的行。它构建了必须包含的所有表的结构,以及将被删除的所有行。

任何给定的表都不能多次出现在此列表中,并且必须有一个父树的子树路径。

我认为您遇到此问题是因为您在Customer表上有自联接。

您必须手动删除子行,然后删除父行。

FWIW,我不会放弃外键关系并尝试设置触发器(如下面的KB文章所示)。

http://support.microsoft.com/kb/321843