Farseer.net轻量级开源框架 入门篇:逻辑层的选择
上一篇:Farseer.net轻量级开源框架 入门篇: 入门篇:增、删、改、查操作演示
下一篇:Farseer.net轻量级开源框架 入门篇: 实体类
当我们创建了一个实体类后,就需要继承其中一个基类:BaseModel、BaseCacheModel、BaseCateModel。只有继承了这三个基类的其中一个时,框架才能对实体建立数据库关系映射(也就是ORM)。并且实现了对数据库的CURD的操作。
本框架与其它一些框架不同之处在于,对于Insert、Update、Delete、ToList、ToInfo 等一系列操作不需要通过“生成工具”去生成这些方法。因为我们利用了.net伟大的泛型进行了封装。
public class Users : BaseModel<Users>{ }
继承了BaseModel之后,会继承以下几个属性
/// <summary>
/// 查询结果
/// </summary>
public static DataResult<TInfo> DataResult { get; set; } /// <summary>
/// 数据库持久化
/// </summary>
public static Bean<TInfo> Data
{
get
{
var bean = new Bean<TInfo>();
DataResult = bean.DataResult;
return bean;
}
} /// <summary>
/// 数据库持久化
/// </summary>
public static CacheDataBean<TInfo> Cache
{
get
{
var bean = new CacheDataBean<TInfo>();
DataResult = bean.DataResult;
return bean;
}
}
Users.DataResult:返回执行数据库的查询情况,如执行时间、执行的SQL语句情况。
Users.Data:则是对数据库的的CURD操作。(在BaseModel中,所有的增删改查的操作都在这里) 它返回的是一个Bean<User>的对象。 在这个对象中。则可以对数据库进行CURD的任意操作。
Users.Cache:缓存操作。该缓存与缓存逻辑层的原理是不一样的,目的也是不一样的。(具体说明在普通逻辑层中:点这里)在这里只需要知道,它是根据执行的SQL,进行命中缓存。
public class Users : BaseCacheModel<Users>{ }
继承了BaseCacheModel之后,会继承以下几个属性
/// <summary>
/// 查询结果
/// </summary>
public static DataResult<TInfo> DataResult { get; set; } /// <summary>
/// 数据库持久化
/// </summary>
public static CacheBean<TInfo> Data
{
get
{
var bean = new CacheBean<TInfo>();
DataResult = bean.DataResult;
return bean;
}
} /// <summary>
/// 数据缓存操作
/// </summary>
/// <param name="db">事务</param>
public static List<TInfo> Cache(DbExecutor db = null)
{
return Data.ToList(db);
}
缓存逻辑层,是把整张表的数据一次性缓存起来,不设有任何的条件。一旦与该表产生操作,会先判断是否已缓存到本地。
特殊说明的是,当对这个表的数据进行操作时(说的是Data属性的操作。)会同时更新本地缓存、数据库数据,可以简单理解为“同步”更新。
这里的Users.Cache() 是方法。而普通逻辑层是属性。注意区别。(目的是事务)这里返回的对象就是List<Users>,后续的操作不用我教了吧。就是本地的变量查询了。
这里的Users.Data 所返回的对象发生变化了。是:CacheBean<TInfo>。这里只包括对数据库的更新操作:新增、删除、修改。而查询操作在Users.Cache()中。
public class Users : BaseCateModel<Users>{ }
继承了BaseCateModel之后,会继承以下几个属性
/// <summary>
/// 查询结果
/// </summary>
public static DataResult<TInfo> DataResult { get; set; } /// <summary>
/// 数据库持久化
/// </summary>
public static CacheBean<TInfo> Data
{
get
{
var bean = new CacheBean<TInfo>();
DataResult = bean.DataResult;
return bean;
}
} /// <summary>
/// 数据缓存操作
/// </summary>
/// <param name="db">事务</param>
public static List<TInfo> Cache(DbExecutor db = null)
{
return Data.ToList(db);
}
分类逻辑层,主要用在一些需要支持无限递归的树数据。树数据是:必须有一个根节点,根节点有无限个子节点,没有节点限制。比如我们常用的有:(频道、xxx分类)
这里与BaseCacheModel的操作是完全一致。唯一不同的是,BaseCateModel是继承自ModelCateInfo。这个类提供了默认的几个字段:
/// <summary>
/// 分类基类
/// </summary>
public class ModelCateInfo : ModelInfo
{
/// <summary>
/// 所属ID
/// </summary>
[Display(Name = "所属分类")]
public virtual int? ParentID { get; set; } /// <summary>
/// 标题
/// </summary>
[Display(Name = "标题"), StringLength(), Required]
public virtual string Caption { get; set; } /// <summary>
/// 排序
/// </summary>
[Display(Name = "排序")]
public virtual int? Sort { get; set; }
}
并且,要配合扩展方法进行更多的操作。(扩展方法的命名空间:using FS.Extend)
扩展方法提供了一系列上下级节点的搜索方法。比如查询父级、顶级、下级等等操作。当然里面的方法有很多。具体大家在:FS.Extend.ListExtend 类中查看。
三个逻辑层就简单的介绍这里,相信大家可以在使用实体类时,知道如何选择使用哪个逻辑层了。
数据量大、且更新频率高的,建议只使用BaseModel 即 普通逻辑层
数据量小、更新频率少的,建议使用BaseCacheModel 即缓存逻辑层
数据量小、更新频率少、需要递归的树节点类型的数据的,建议使用BaseCateModel 即缓存逻辑层
上一篇:Farseer.net轻量级开源框架 入门篇: 入门篇:增、删、改、查操作演示
下一篇:Farseer.net轻量级开源框架 入门篇: 实体类
QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net
Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。
Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。
ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)
Farseer.Net的目标是:快速上手、快速开发、简单方便。
new User { ID = , Name = "张三" }.Insert()
Farseer.net轻量级开源框架 入门篇:逻辑层的选择的更多相关文章
- Farseer.net轻量级开源框架 入门篇:分类逻辑层
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 缓存逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 ...
- Farseer.net轻量级开源框架 入门篇:添加数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 分类逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 ...
- Farseer.net轻量级开源框架 入门篇:使用前说明
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 框架性能测试 下一篇:Farseer.net轻量级开源框架 入门篇: 增.删.改. ...
- Farseer.net轻量级开源框架 入门篇:修改数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ...
- Farseer.net轻量级开源框架 入门篇:删除数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 ...
- Farseer.net轻量级开源框架 入门篇:查询数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 下一篇:Farseer.net轻量级开源框架 中级篇: Where条 ...
- Farseer.net轻量级开源框架 入门篇:Where条件的终极使用
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 下一篇:Farseer.net轻量级开源框架 中级篇: 事务的使用 ...
- Farseer.net轻量级开源框架 中级篇:事务的使用
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: Where条件的终极使用 下一篇:Farseer.net轻量级开源框架 中级篇: ...
- Farseer.net轻量级开源框架 中级篇:自定义配置文件
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 ...
随机推荐
- 百度语音识别API初探
近期想做个东西把大段对话转成文字.用语音输入法太慢,所以想到看有没有现成的API,网上一搜,基本就是百度和讯飞. 这里先看百度的 笔者使用的是Java版本号的 下载地址:http://bos.nj.b ...
- DOM对象与jquery对象的互相转换
一開始总是对DOM对象和jQuery对象搞不清楚.如今对此做一下总结: DOM 对象:文档对象模型.每一份DOM都能够看作一棵树.像ul,li ol dl p h1 等等都是DOM元素节点.能 ...
- Java实现二叉排序树的插入、查找、删除
import java.util.Random; /** * 二叉排序树(又称二叉查找树) * (1)能够是一颗空树 * (2)若左子树不空,则左子树上全部的结点的值均小于她的根节点的值 * (3)若 ...
- 调试 Android* x86 应用程序的方法以及要使用的工具
作者:Xiaodong Wang 1.简单介绍 众所周知,Android* 开发者头顶很多称呼:设计员.程序员等,而且一般会不可避免地被称为故障检修工. 代码中的错误无法避免.因此不管您是否一開始就造 ...
- 2016/1/6 输出菱形 while语句计算阶乘分数之和
public class LingXing { public static void main(String[] args) { //打印菱形 for (int x=1;x<6;x++){ fo ...
- Codeforces Round #233 (Div. 2)D. Painting The Wall 概率DP
D. Painting The Wall ...
- 关于spring配置文件中编辑时没有提示信息的问题
spring配置文件头部信息主要是提供一个xml的编写规范作用. 新创建的配置文件引入头部信息后,编辑时没有提示信息,重启elipse即可解决.
- beego3---gohttp底层实现
package main //gohttp底层实现,通过gohttp不是通过beego实现的输出 // import ( "io" "log" "ne ...
- CPU卡详解【转】
本文转载自:http://blog.csdn.net/logaa/article/details/7571805 第一部分 CPU基础知识 一.为什么用CPU卡 IC卡从接口方式上分,可以分为接触式I ...
- YTU 2516: 剪刀石头布
2516: 剪刀石头布 时间限制: 1 Sec 内存限制: 128 MB 提交: 193 解决: 123 题目描述 小慧小时候很喜欢和她的小伙伴们一起玩剪刀(Scissors).石头(Rock). ...