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.Web
2 {
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轻量级开源框架 入门篇: 添加数据详解

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。