我正在尝试在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
如果删除产品,则删除所有子文件夹。这可能吗?