是否支持 DELETE CASCADE?

Posted

技术标签:

【中文标题】是否支持 DELETE CASCADE?【英文标题】:ON DELETE CASCADE support? 【发布时间】:2012-02-09 12:51:56 【问题描述】:

正如标题所说,我正在尝试使用 Entity Framework、mysql 和 CodeFirst 删除一个对象。

我的对象中有一个多对多关系,我只删除了一个约定:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

在我的上下文中。但是我在尝试删除时仍然得到这个:

Cannot delete or update a parent row: a foreign key constraint fails (`db`.`jagtartjagtrejse`, CONSTRAINT `JagtArt_JagtRejser_Target` FOREIGN KEY (`JagtRejse_JagtRejseID`) REFERENCES `jagtrejse` (`JagtRejseID`))

mysql 连接器不支持删除级联,还是有什么问题?

【问题讨论】:

这些问题可能对***.com/questions/3334619/…, ***.com/questions/1905470/…有帮助 谢谢,但不幸的是他们没有,因为它与实体框架和 CodeFirst 相关,我不(也不应该)接触任何 SQL DDL。 【参考方案1】:

通过在 EF 迁移文件中强制 cascadeDelete: true,我得到了相同的结果。

ON DELETE 设置为 RESTRICT,而它应该是 CASCADE。 我必须手动更改 FK 才能让它工作。

编辑:在 Mysql 错误跟踪器上提交的错误。

【讨论】:

【参考方案2】:

https://***.com/a/5532950/965013

我相信这回答了您的问题。该链接显示了如何在删除时禁用级联,但正如您将看到的,打开它只是一个调用的问题

modelBuilder.Entity<...>() 
        .HasRequired(...) 
        .WithMany(...) 
        .HasForeignKey(...) 
        .WillCascadeOnDelete(true); 

【讨论】:

以上是关于是否支持 DELETE CASCADE?的主要内容,如果未能解决你的问题,请参考以下文章

1) 不能在 DELETE SET NULL 或 ON DELETE CASCADE 上创建外键 2) 不能在 DELETE CASCADE 上创建外键

mysql 设置外键 四大属性 CASCADE SET NULL NO ACTION RESTRICT 理解

为啥我的模型的“on_delete=models.CASCADE”不生成级联外键约束?

on_delete=models.CASCADE级联删除

on_delete=models.CASCADE级联删除

Django 没有设置 MySQL ON DELETE = CASCADE