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轻量级开源框架 中级篇: 动态数据库访问 ...
随机推荐
- Samba完整篇 ubuntu 10.04
基本的服务器准备工作 修改Root密码 sudo passwd root 在提示下建立新密码 修改静态IP: sudo gedit /etc/network/interfaces #网络配置文件 ...
- HDU 2870 Largest Submatrix (单调栈)
http://acm.hdu.edu.cn/showproblem.php? pid=2870 Largest Submatrix Time Limit: 2000/1000 MS (Java/Oth ...
- yarn-cli 缓存
yarn cache list Yarn 会在你的用户目录下开辟一块全局缓存用以保存下载的包.yarn cache list 用于列出所有已经缓存的包. yarn cache dir 执行 yarn ...
- android自己定义控件系列教程----视图
理解android视图 对于android设备我们所示区域事实上和它在底层的绘制有着非常大的关系,非常多时候我们都仅仅关心我们所示,那么在底层一点它究竟是怎么样的一个东西呢?让我们先来看看这个图. w ...
- react 执行 yarn build 页面无法显示
资源文件路径问题 如果你使用create-react-app创建项目,执行命令 yarn build 后,直接以静态方式打开build文件夹内的index.html,会看到页面显示出现问题,打开con ...
- ios Enum Value To NSString
#define enumToString(value) @#value eg. typedef NS_ENUM(NSInteger, Sex) { Male = 0, Famale = 1, }; ...
- MyEclipse,Eclipse注释规范模板
注释的作用:myeclipse中java文件头注释格式设置,最终可用于javadoc.exe生成API文档,同时提高了代码的可读性 设置方法: windows->preferences-> ...
- ZOJ3659 Conquer a New Region 并查集
Conquer a New Region Time Limit: 5 Seconds Memory Limit: 32768 KB The wheel of the history roll ...
- 满足qps 同时兼顾 数据生产速率
满足qps 同时兼顾 数据生产速率
- android MediaRecorder start failed:-38【转】
本文转载自:http://blog.csdn.net/fnuwfnh/article/details/46698509 最近在学习android 录音方面的知识,发现在部分手机正常运行的APP,在华为 ...