0

我有一个如下对象:

public class AdminMenuItem : BaseEntity
{
    public int? ParentMenuItemId { get; set; }
    public string Name { get; set; }
    public string Url { get; set; }

    public AdminMenuItem ParentMenuItem { get; set; }
}

我添加了两个菜单项。一个是没有父菜单的 A。另一个 B 和 A 是 B 的父菜单项。

当我删除 A 时,它会在下面抛出异常:

The DELETE statement conflicted with the SAME TABLE REFERENCE constraint "FK_dbo.AdminMenuItem_dbo.AdminMenuItem_ParentMenuItemId".

冲突发生在数据库“A61DB”、表“dbo.AdminMenuItem”、列“ParentMenuItemId”中。该语句已终止

在删除父项时我应该做什么配置来删除子项?我应该通过将其置于循环中手动完成还是在实体框架 5 中有足够的方法来完成它?我尝试使用WillCascadeOnDelete但我无法成功。

还有没有办法将子对象外键设置为 null ?(这是可选的)

4

1 回答 1

0

实体支持 ON CASCADE DELETE。请看这个:

级联删除与实体框架相关的实体由 ef 删除

和这个:

删除级联实体框架

和 MSDN 文章:

级联删除如何在 ef 中真正起作用

于 2013-07-14T12:30:49.977 回答