Freesql使用一张带父子关系的表,生成list树型数据

Freesql的版本到1.5后新提供了一个功能,ISelect.ToTreeList 查询树型数据 List,这个功能对父子关系的表很有效果,父子关系表把数据查回来了是平面的,需要再用递归转化为树型。这样通过导航属性和新功能就可以生成树型数据。

表中的数据结构如下

id为本节点id,p_id为父节点id。

类设置如下

public class AppSysOrg
 {
        [JsonProperty, Column(Name = "id", IsPrimary = true)]
        public long OrgId { get; set; }
        [JsonProperty, Column(Name = "p_id")]
        public long? OrgPId { get; set; }
        [JsonProperty,Navigate("OrgPId")]
        public  List<AppSysOrg> Childs{ get; set; }
}

注意,JsonProperty是用于webapi传输过程中序列化使用的,Navigate是freesql中标记导航属性,Navigate 设置的字符串是 类属性名,不是表 字段名!

正确配置导航属性后,使用新功能

fsql.Select<AppSysOrg>().ToTreeList();

即可返回同表中父子关系的json结构图,如下

关于freesql 1.5的介绍在连接,可以参考https://mp.weixin.qq.com/s/PtF-7SyliRgrbL-iWIc3xw

参考文章,https://www.cnblogs.com/kellynic/p/11610724.html

原文地址:https://www.cnblogs.com/Lvkang/p/12987370.html