树型映射


  树型实体类使用 EntityTreeMappingAttribute 特性进行标记(树型的使用可参考 树型持久化)。它包含以下的属性:

  • InnerSign 用来标记作为编码的属性。

  • Level 用户标记作为级别的属性(非必要)。如果未指定,则由 编码长度 / SignLength 算得。

  • Order 用来标记作为排序的属性(非必要)。如果未指定,则由 编码 进行排序。

  • Name 用来标记作为名称的属性(非必要)。

  • FullName 用来标记作为全名的属性(非必要)。当指定全名时,需要同时指定 Name,否则无法生成全名。

  • NameSeparator 用来设置全名间分隔的字符,默认为 。

  • SignLength 用来设置每级编码的位数,默认为4位。

  • SignStyle 用来设置编码方式,有固定 Fixed 和 可变 Variable 两种,当为可变时,需要设置 SignBits。

  • SignBits 用来设置每一级编码的位数,SignStyle 设为 Variable 有效。


  使用树结构的实体类,需要使用 EntityTreeMappingAttribute 进行标记。如下所示:

[EntityMapping("departments")]
[EntityTreeMapping(InnerSign = nameof(Departments.Code))]
public class Departments : EntityObject
{
    public virtual string Code { get; set; }
}

  使用 EntityMetadataUnity 类可以获取指定实体类型的树型实体元数据。如下所示:

[TestMethod]
public void TestGetEntityTreeMetadata()
{
    var metadata = EntityMedataUnity.GetEntityMetadata(typeof(Departments));
    var treemetadata = metadata.EntityTree;
    Assert.IsNotNull(treemetadata.InnerSign);
}