多对多级联删除微风

时间:2014-10-31 21:55:18

标签: sql-server entity-framework database-design ef-code-first breeze

我有四个实体A,B,C和D.

A有很多B和C。

B有很多Ds。

C和D之间存在多对多的关系。

这种多对多关系位于以Breeze作为实体CD公开的连接表中。

我想建立一个级联删除,以便删除以下任何行中的第一个实体会产生级联删除。

A -> B -> D -> CD

B -> D -> CD

D -> CD

A -> C -> CD

C -> CD

除了A - >之外,所有其他外键都有级联删除。 C.每次我尝试将其设置为级联删除时SQL Server 2012都会出现以下错误:

  

无法创建关系'FK_dbo.C_dbo.A_AId'。介绍   表'C'上的FOREIGN KEY约束'FK_dbo.C_dbo.A_AId'可能导致   循环或多个级联路径。指定ON DELETE NO ACTION或   ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。可以   不创造约束。查看以前的错误。

如何解决此错误并接近我正在寻找的内容?

1 个答案:

答案 0 :(得分:0)

由于存在多个级联路径,SQL服务器抱怨ON DELETE CASCADE OPTION

一条路径C-> CD和另一条C-> A-> B-> D-> CD

您只需使用ON DELETE CASCADE选项

定义外键即可

您可以在表C上创建INSETAD OF DELETE触发器并删除表A中的相应行