#nullable enable using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Abp.Domain.Entities.Auditing; using VberZero.BaseSystem.Users; namespace VberZero.BaseSystem; public abstract class TreeEntity : TreeEntity where TEntity : class { } public abstract class TreeEntity : TreeEntityBase where TEntity : class { [ForeignKey("ParentNo")] public TEntity Parent { get; set; } } public abstract class TreeEntityBase : AuditedEntity { public const int MaxDepth = 20; public const int PathMaxLength = 15 * MaxDepth; /// /// 父节点 /// public TPrimaryKey? ParentNo { get; set; } /// /// 路径 /// [StringLength(PathMaxLength)] public string Path { get; set; } /// /// 是否是叶子节点 /// public bool IsLeaf { get; set; } /// /// 节点深度 /// public int Depth { get; set; } public int Sort { get; set; } }