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