Entity Framework(代码优先)递归父级

Entity Framework (Code First) recursive parent

我试图描述一个树状结构,其中每个项目都是树中的一个节点,并且可以(或不)有一个父节点。

在描述 Node 实体时,这有效:

public class Node
{
    public int Id {get;set;}
    public string Description {get;set;}
    public int ParentId {get;set;}
}

我得到一个名为 Nodes 的 table,其中包含上述列和 ID 上的 PK。如果我再添加一个新参数:

public virtual Node Parent {get;set;}

为了quick/easy访问父节点,创建代码添加外键约束要求ParentId指向一个NodeId.

由于某些节点没有父节点,因此尝试添加 ParentId 为 0 的 Node 失败。

有办法吗?

你的数据模型有什么限制吗?如果不只是尝试使 parentId 可以为空:

   public int? ParentId {get;set;}