树型映射
树型实体类使用 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);
}