首页 > 解决方案 > .NET Core 3.1/5 和 SQL Server HierarchyId

问题描述

如何在 .NET Core 中自动/以编程方式生成HierarchyId,我将 Category 设置为另一个子项,并希望 HierarchyId 字段自动更新,但没有任何反应。

我需要一种方法来手动计算和更新吗?

public class Category : BaseModelSimple<int>
{
    public HierarchyId Node { get; set; }

    public int? ParentId { get; set; }

    [ForeignKey("ParentId")]
    public virtual Category Parent { get; set; }

    public virtual ICollection<Category> Childs { get; set; }
}

标签: sql-serverasp.net-coreparent-childef-core-3.1hierarchyid

解决方案


HierarchyId 列不会自动生成值,您显然甚至可以输入重复项,除非您还有一个强制唯一值的索引,如果您需要多个根条目,这可能会出现问题。我见过的大多数示例都预先填充根节点,然后从那里添加子节点,这涉及获取要添加子节点的节点,获取所有子节点,找出最后一个,然后在此之上添加。

您可能会发现以下链接的评论有助于入门,希望您不会遇到我无法通过 .NET 添加数据的相同问题,因为我不断收到转换错误。

将 HierarchyId 与 Entity Framework Core 一起使用


推荐阅读