实体框架自引用表,删除导致约束冲突

时间:2016-11-03 15:47:38

标签: asp.net entity-framework

我正在尝试在EF中实现文件夹层次结构。现在我搜索了这个以找到解决方案并找到以下内容:

Modelling folder structure in Entity Framework Core

http://www.mikesdotnetting.com/article/255/entity-framework-recipe-hierarchical-data-management

但是,我面临两个问题。一个是我们设定的     WillCaseCadeOnDelete(假)

我会收到以下错误。     DELETE语句与SAME TABLE REFERENCE约束“FK_dbo.Folders_dbo.Folders_ParentFolderId”冲突。冲突发生在数据库“CMSDatabase”,表“dbo.Folders”,列'ParentFolderId'。

如果我将删除时的WillCaseCade设置为true,我将收到有关“可能导致循环或多个级联路径”的错误。

这是代码

public class Folder
{

    public int PrimaryKey { get; set; }

    [Display(Name = ("Parent Folder"))]
    public int? ParentFolderId { get; set; }


    public virtual Folder Parent { get; set; }
    public virtual ICollection<Folder> Children { get; set; }



}

我也为此设置了配置。

HasOptional(e => e.Parent).WithMany(e => e.Children).HasForeignKey(p => p.ParentFolderId).WillCascadeOnDelete(false);

真正想做的是能够删除所有子文件夹,所以如果我们有一个像

这样的结构
Products > Laptops > Intel

如果删除产品,则删除所有子文件夹。这可能吗?

0 个答案:

没有答案