参考 Entity Framework 中根的树结构

Tree structure with reference to root in Entity Framework

我正在尝试为 Entity Framework 中的订单建模树结构。现在我进行了以下操作:

public class ProjectModel
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public int CustomerId { get; set; }

    public virtual List<ProjectNode> Nodes { get; set; }
}

public class ProjectNode
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public string Path { get; set; }

    public int? ParentId { get; set; }

    [ForeignKey("ParentId")]
    public virtual List<ProjectNode> Children { get; set; }
}

我需要做的是在 ProjectNode 的任何级别获取对根 ProjectModel 的引用,以便授权给定用户实际有权查看和更改项目其中包含 ProjectNode

public class ProjectNode {
    public int ProjectId { get; set; }  //<-- this
...

public class ProjectModel {
    [Key]
    public int Id { get; set; }         //<-- containing the value of this
}

我的问题是是否可以在树结构的每一层填充理论上的 ProjectId 属性,或者我是否需要手动设置它。

我有一些工作,乍一看似乎允许此功能,但经过进一步调查,只填充 ProjectModel 中包含的 ProjectNodeProjectId Nodes 属性.

在我看来,通过结构向后递归以到达根节点效率极低。

此答案归功于@TestWell -

显然,为了让 EF 自动填充 ProjectNode 上的 ProjectId 属性,我需要做的就是更改 Id [=24] 的名称=] 在 ProjectModelProjectId 中。

不幸的是,如果我将 CustomerId 属性 添加到 ProjectNode,我希望从 属性 自动填充在节点的根 ProjectModel 上使用相同的名称,我意识到这是对我正在尝试做的事情更有效的解决方案。