导航

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

上一篇:Farseer.net轻量级开源框架 入门篇: 入门篇:增、删、改、查操作演示

下一篇:Farseer.net轻量级开源框架 入门篇: 实体类

当我们创建了一个实体类后,就需要继承其中一个基类:BaseModel、BaseCacheModel、BaseCateModel。只有继承了这三个基类的其中一个时,框架才能对实体建立数据库关系映射(也就是ORM)。并且实现了对数据库的CURD的操作。

本框架与其它一些框架不同之处在于,对于Insert、Update、Delete、ToList、ToInfo 等一系列操作不需要通过“生成工具”去生成这些方法。因为我们利用了.net伟大的泛型进行了封装。

BaseModel:普通逻辑层
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,进行命中缓存。

BaseCacheModel:缓存逻辑层
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()中。

BaseCateModel:分类逻辑层(带缓存)
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轻量级开源框架 入门篇: 入门篇:增、删、改、查操作演示

下一篇: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轻量级开源框架 入门篇:逻辑层的选择的更多相关文章

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 缓存逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 ...

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

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 分类逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 ...

  3. Farseer.net轻量级开源框架 入门篇:使用前说明

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 框架性能测试 下一篇:Farseer.net轻量级开源框架 入门篇: 增.删.改. ...

  4. Farseer.net轻量级开源框架 入门篇:修改数据详解

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ...

  5. Farseer.net轻量级开源框架 入门篇:删除数据详解

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 ...

  6. Farseer.net轻量级开源框架 入门篇:查询数据详解

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 下一篇:Farseer.net轻量级开源框架 中级篇: Where条 ...

  7. Farseer.net轻量级开源框架 入门篇:Where条件的终极使用

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 下一篇:Farseer.net轻量级开源框架 中级篇: 事务的使用 ...

  8. Farseer.net轻量级开源框架 中级篇:事务的使用

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: Where条件的终极使用 下一篇:Farseer.net轻量级开源框架 中级篇: ...

  9. Farseer.net轻量级开源框架 中级篇:自定义配置文件

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 ...

随机推荐

  1. Angular CLI: 1.6.7 入门

    当你使用npm或者yarn也安装不了angular-cli时,请使用淘宝镜像. Step1 npm i -g cnpm --registry=https://registry.npm.taobao.o ...

  2. prototype与几个循环的心得

    <一>prototypeprototype其实是函数的一个属性,并且只有函数有这个属性,这个属性就是给函数增加函数或者属性的,比如写一个function one(){},那么one.pro ...

  3. USRP内部的寄存器

    usrp_regs.hpp #ifndef INCLUDED_USRP2_REGS_HPP #define INCLUDED_USRP2_REGS_HPP ////////////////////// ...

  4. php(cli模式)执行文件传递参数

    php -f index.php hello test 2314 shell命令执行php文件不像http那样通过GET方式传参 同样php文件获取的时候也不能用$_GET方法了 而是通过$argv[ ...

  5. WEB端应该使用DataTable/DataSet吗?

    有一次和同事讨论起具体的技术细节,同事说不要用什么实体类,从数据库访问到的数据,直接用DataTable.DataSet 就好.理由是,从获取到的数据集转换成实体类,有一定的性能损耗. 呵呵,性能.我 ...

  6. 2015ACM/ICPC Asia Regional Changchun Online /HDU 5438 图

    Ponds                                   Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 1310 ...

  7. JButton的setRollover出现的奇怪问题

    设置了setRollover,可以正常出现状态但是却不会回到默认状态. 研究了一下才发现,repaint的时候不会清除背板而是覆盖上去的, 所以如果原图是透明图就会出现状态不变的情况

  8. T4 最小差异值 dvalue

    T4 最小差异值 dvalue [问题描述] P 省刚经历一场不小的地震,所有城市之间的道路都损坏掉了,所以省长想请你将城市之间的道路重修一遍. 因为很多城市之间的地基都被地震破坏导致不能修公路了,所 ...

  9. bzoj 1924 所驼门王的宝藏

    题目大意: 有一个r*c的矩阵,上面有n个点有宝藏 每个有宝藏的点上都有传送门 传送门有三种:第一种可以传到该行任意一个有宝藏的点,第二种可以传到该列任意一个有宝藏的点,第三种可以传到周围的八连块上有 ...

  10. 【POJ 2983】 Is the information reliable?

    [题目链接] 点击打开链接 [算法] 差分约束系统,SPFA判负环 [代码] #include <algorithm> #include <bitset> #include & ...