是否支持 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 理解