简介 来源:http://www.cnblogs.com/zxj159/p/4082987.html

一、Active Record(活动记录)模式
  Active Record是业务逻辑层中(《企业应用架构模式》将该模式归为数据源模式)常用的一种框架模式,尤其在底层数据库模型匹配业务模型时它特别有用,它是一种以数据库驱动为主的框架模式。

  通常,数据库中的每张表都对应一个业务对象。业务对象表示表中的一行,并且包含数据、行为以及持久化该对象的工具,此外还有添加新实例和查找对象集合所需的方法。

  在Active Record模式中,每个业务对象均负责自己的持久化和相关的业务逻辑。

  Active Record模式非常适用于在数据模型与业务模型之间具有 一对一映射关系的简单应用程序,如博客或论坛。

  因为业务对象与数据库中的表具有一对一映射关系,而且均具有相同的CRUD方法,所以可以使用代码生成器自动生成业务模型。

  Active Record模式中的对象通常会包含用来执行数据库操作的CRUD操作,还有相关验证及业务相关的计算和检查功能。

  特别地,典型的Active Record类还包含一些表示数据表中的列的实例属性和操作于当前对象上的实例方法。Active Record类中还可能包含一些静态方法,用来操作数据表上的所有记录。(下面的实战操作可能会很好的帮助你理解这句话)

  1.Active Record的优势
  Active Record的成功依赖于两个因素:简单和框架。Active Record概念上理解起来十分的简单, 不过若手工实现,仍然需要很多代码。

  编写并维护每一个类都需要大量的代码,不过这仅仅是最低的需求,因为你可能还要考虑为每个类或者数据表添加一个或多个数据迁移对象(DTO)。

  不可否认,活动记录确实在简单和最终系统的强大方面找到了良好的平衡。且该模式也等到了很多开发商的支持,例如,LINQ-to-SQL和我们今天的主角--Castle ActiveRecord。

  2.Active Record的劣势
  理论上,开发中还需要一个额外的层存在于对象模型和数据模式之间,通常叫做数据映射层(Data Mapper)。在Active Record中,我们可以将该层直接集成在对象中,不过随着这一层越来越复杂,维护成本也在逐渐提高。

  Active Record的另外一个问题是对象和数据表设计之间的绑定。若你不得不修改数据库,那么要同时修改Active Record的对象模型以及所有的相关代码。

  3.Active Record与表模式的区别
  表模式通常就是目前三层框架中流行的以DateTable和DateSet为载体在各层中传递数据,Active Record则是以对象模型、泛型(如IList<Post>)为载体在各层中传递数据。

二、Castle ActiveRecord介绍
  Castle ActiveRecord 是ActiveRecord 模式的一个实现,Castle ActiveRecord依赖Nhibernate来完成实际的映像。与单纯的ActiveRecord 相比,Castle ActiveRecord具有以下特点:

敏捷开发(它尽可能多地处理了映射和推断,因此,对你的方案而言,当一些东西发生变化的时候,你不必去钻研文档或者处理大量的xml文档)
预定了像Create, Update, Save, Delete这样的公共方法。
容易实现像Find, FindAll, FindByName等此类的方法。
绘画和事务范围(Session and transaction scopes that abstracts the ISession and translates them to a more natural idiom )
  使用Nhibernate,你繁琐的配置工作多于复杂的映射,而使用ActiveRecord却是推进你的生产力的一个保证,你不必再为编写繁冗复杂的映射文件而头疼,ActiveRecord封装了NHibernate的操作,使用特性来代替映射文件,无论何时你需要,ActiveRecord都能给你一个Isession实例,它提供的简洁的O/R映射会让你为实现持久化数据层是那么简单而惊叹!

  官方网址:http://www.castleproject.org/

Castle ActiveRecord学习(一)简介的更多相关文章

  1. Castle ActiveRecord学习实践

    Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架.AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务. ...

  2. Castle ActiveRecord学习(五)使用HQL语句查询

    来源:http://www.cnblogs.com/Terrylee/archive/2006/04/12/372823.html 一.HQL简单介绍HQL全名是Hibernate Query Lan ...

  3. Castle ActiveRecord学习(三)数据映射及特性描述

    Model中的Demo: using Castle.ActiveRecord; using Castle.ActiveRecord.Queries; using System; using Syste ...

  4. Castle ActiveRecord学习(二)配置、引用、程序启动

    来源:http://www.cnblogs.com/zxj159/p/4082987.html 配置数据库驱动: Model层引用:Castle.ActiveRecord.dll.NHibernate ...

  5. Castle ActiveRecord学习(六)数据验证

    参考.来源:http://www.cnblogs.com/Terrylee/archive/2006/04/13/374173.html https://github.com/castleprojec ...

  6. Castle ActiveRecord学习(四)延迟加载、分页查询、where条件

    一.延迟加载 //用户发布的主题,一对多:Table:外键表:ColumnKey:外键:Lazy:延迟加载:Cascade:级联操作(级联删除) [HasMany(typeof(ThemeInfo), ...

  7. Castle ActiveRecord学习(八)事务

    代码: public void UpdateThemeInfo(int id) { //事务 using (TransactionScope ctran = new TransactionScope( ...

  8. Castle ActiveRecord学习(七)使用日志

    暂无 参考:http://terrylee.cnblogs.com/archive/2006/04/14/374829.html

  9. Castle ActiveRecord框架学习(二):快速搭建简单博客网站

    一.数据库 1.数据表 Category:类别标签表(字段Type=1为类别,Type=2为标签) Category_Post:类别标签与文章中间表 Post:文章表 Comment:评论表 2.数据 ...

随机推荐

  1. CSS3 的calc()方法的使用

    calc()简单介绍 calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我, ...

  2. Python之模块(二)

    1.subprocess模块 2.loggin模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日 ...

  3. python json.loads json.dumps(ensure_ascii = False) 汉字乱码问题解决

    python 转换为json时候 汉字编码问题 2017年03月23日 18:50:04 阅读数:5604 有这样一个需求: 需要一个json 文件 数据从数据库里查询出来 1. 设置文件头 # -* ...

  4. leetcode292

    public class Solution { public bool CanWinNim(int n) { //如果要赢,最后3个必须是自己来拿 //也就是最后剩1,2,3是胜利, //如果剩4枚, ...

  5. VB 调用动态链接库

    作为一种简单易用的Windows开发环境,Visual Basic从一推出就受到了广大编程人员的欢迎.它使 程序员不必再直接面对纷繁复杂的Windows消息,而可以将精力主要集中在程序功能的实现上,大 ...

  6. Windows 域用户

    Windows 2000 组及说明 分类: Windows 2000 的组分为Security 和 Distribution 两种. Security 类型是Windows 2000 唯一用于赋予权限 ...

  7. Mongodb 安装 和 启动

    教程:http://www.mongodb.org.cn/tutorial/59.html 下载 >wget https://fastdl.mongodb.org/linux/mongodb-l ...

  8. Tomcat Servlet学习

    参照: 浅谈cookie跨域的解决方案——document.domain(http://blog.csdn.net/zhouziyu2011/article/details/61200943) Ser ...

  9. PL/SQL Developer安装教程以及汉化包安装教程

    一.安装PL/SQL 1.百度下载plsql破解版软件,官网只能使用30天 2.双击plsqldev906.exe进行安装,点击 iagree 3.默认是安装在c盘,可以根据自己需要更改安装目录 4. ...

  10. Linux安装初始化

    鸟哥的Linux 私房菜 Linux常用命令大全     http://www.cnblogs.com/yjd_hycf_space/p/7730690.html 安装看锋哥教程   可能最后网卡出错 ...