代码第一个到多个自引用WillCascadeOnDelete错误

时间:2016-03-27 16:13:29

标签: ef-code-first entity-framework-6

我首先尝试使用EF6代码进行一对多自引用。我的实体看起来像这样

public class Menu
{
    public int Id { get; set; }
    public bool Target { get; set; }
    public string Url { get; set; }   
    [DefaultValue(null)]
    public int? ParentMenuId { get; set; }
    public virtual Menu ParentMenu { get; set; }
    public virtual List<Menu> ChildMenus { get; set; }
}  

在我的上下文类中,我这样做是用WillCascadeOnDelete(true)进行自引用

            modelBuilder.Entity<Menu>()
            .HasOptional(c => c.ParentMenu)
            .WithMany(c => c.ChildMenus)
            .HasForeignKey(c => c.ParentMenuId)
            .WillCascadeOnDelete(true);

但是当我在包管理器控制台中更新数据库时,它会给出错误

在表'菜单'上引入FOREIGN KEY约束'FK_dbo.Menus_dbo.Menus_ParentMenuId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。查看以前的错误。 enter image description here

1 个答案:

答案 0 :(得分:1)

最后我发现在代码中没有任何方法第一个自引用实体Cascade Delete,我应该为级联删除编写递归函数