首页 > 代码库 > Farseer.net轻量级开源框架 入门篇:分类逻辑层
Farseer.net轻量级开源框架 入门篇:分类逻辑层
分类逻辑层,主要用在一些需要支持无限递归的树数据。树数据是:必须有一个根节点,根节点有无限个子节点,没有节点限制。比如我们常用的有:(频道、xxx分类)
这里与BaseCacheModel的操作是完全一致。唯一不同的是,BaseCateModel是继承自ModelCateInfo。这个类提供了默认的几个字段:
1 /// <summary> 2 /// 分类基类 3 /// </summary> 4 public class ModelCateInfo : ModelInfo 5 { 6 /// <summary> 7 /// 所属ID 8 /// </summary> 9 [Display(Name = "所属分类")]10 public virtual int? ParentID { get; set; }11 12 /// <summary>13 /// 标题14 /// </summary>15 [Display(Name = "标题"), StringLength(50), Required]16 public virtual string Caption { get; set; }17 18 /// <summary>19 /// 排序20 /// </summary>21 [Display(Name = "排序")]22 public virtual int? Sort { get; set; }23 }
首先,我们先创建一个实体。(数据库就不放上来了)
它继承了BaseCateModel基类。
1 namespace FS.Model.Web2 {3 /// <summary>4 /// 频道5 /// </summary>6 [DB(Name = "Web_ChlDB")]7 public class ChlDB : BaseCateModel<ChlDB> { }8 }
看到这里,大家是否觉得奇怪?怎么没有属性呢?因为我们继承了ModelCateInfo,而ModelCateInfo又继承了ModelInfo。所以ID、Caption、Sort、ParentID 都是默认支持的。因为这个类是“空”的属性。
当然。你会说,你的数据库字段的属性名不叫这个啊。别忘了。类的属性与数据库的字段的映射是通过特性来建立的。也就是说,不管你的类属性名称是什么,只要特性申明中,对应好字段名称就可以了。
并且这些父类的属性都是可重写的,因此根据你的项目选择性进行重写即可。
BaseCacheModel有的功能,BaseCateModel都有
BaseCateModel在这个基础下扩展了一系列针对“树”的操作。(扩展方法的命名空间:using FS.Extend)
扩展方法提供了一系列上下级节点的搜索方法。比如查询父级、顶级、下级等等操作。当然里面的方法有很多。具体大家在:FS.Extend.ListExtend 类中查看。
它是在ChlDB.Cache()下的扩展,如图:
这篇基本上都介绍了BaseCateModel的使用。
相对于BaseCacheModel,增加了额外对“树”数据结构的操作。
Farseer.net轻量级开源框架 入门篇:分类逻辑层