首页 > 代码库 > Farseer.net轻量级开源框架 入门篇:分类逻辑层

Farseer.net轻量级开源框架 入门篇:分类逻辑层

导航

目   录:Farseer.net轻量级开源框架 目录

上一篇: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     }

首先,我们先创建一个实体。(数据库就不放上来了)

ChlDB实体

 它继承了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 都是默认支持的。因为这个类是“空”的属性。

当然。你会说,你的数据库字段的属性名不叫这个啊。别忘了。类的属性与数据库的字段的映射是通过特性来建立的。也就是说,不管你的类属性名称是什么,只要特性申明中,对应好字段名称就可以了。

并且这些父类的属性都是可重写的,因此根据你的项目选择性进行重写即可。

BaseCateModel与BaseCacheModel的区别

BaseCacheModel有的功能,BaseCateModel都有

BaseCateModel在这个基础下扩展了一系列针对“树”的操作。(扩展方法的命名空间:using FS.Extend)

扩展方法提供了一系列上下级节点的搜索方法。比如查询父级、顶级、下级等等操作。当然里面的方法有很多。具体大家在:FS.Extend.ListExtend 类中查看。

它是在ChlDB.Cache()下的扩展,如图:

总结

这篇基本上都介绍了BaseCateModel的使用。

相对于BaseCacheModel,增加了额外对“树”数据结构的操作。

导航

目   录:Farseer.net轻量级开源框架 目录

上一篇:Farseer.net轻量级开源框架 入门篇: 缓存逻辑层

下一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解

Farseer.net轻量级开源框架 入门篇:分类逻辑层