XCode是一个轻量级的ORM组件(对象与关系数据库映射),提供以面向对象的方式操做数据库的功能,可以解决90%以上的数据库操做场景。 html
作为X系列组件最重要的一员,XCode秉承了简单实用的特色,力求以最简单的作法,解决最广泛的问题。 数据库
XCode最大的“缺点”就是“不支持”多表查询!为什么不支持要加双引号?那是由于XCode实际上支持多表查询,只是用起来很是复杂,也不容易讲清楚,会严重影响基本功能的学习理解,因此逢人问到,我都回答不支持!至于缺点二字加双引号,是由于XCode有一整套替代方案,在绝大多数状况上,更优于多表查询。 缓存
说XCode,就不得不提开发模式。每个ORM组件,都是在某一种开发模式下,才能表现得最出色,XCode也不例外,咱们称之为XCode开发模式。固然,每一个人有本身的想法,有本身的开发习惯,能够尝试根据本身的习惯去使用XCode,或者稍微修改本身的习惯,也许能有更精彩的用法。 学习
XCode专一于对象与关系数据库映射,内部明显分为上下两层: 网站
1,下层以DAL做为入口,IDatabase做为接口,各类数据库实现一个类,实现该接口以支持多数据库。DAL的两大表明是Select(查询SQL,返回DataSet)和Execute(执行SQL,返回影响行数),而且以SQL为key,有一级缓存的支持。DAL还支持DbCommand的查询和操做,不过就不受一级缓存的支持了。 spa
(DAL层结构图) 3d
2,上层以Entity做为泛型基类,全部实体类继承于它。经典的LoadData可以把DataSet或者DataTable转化为实体对象集合,每行记录实例化一个实体对象,每一个表字段的值赋值给实体对象的属性。因此,彻底能够以别的方式获得DataSet,而后利用LoadData将其转为实体对象集合,而不必定须要DAL。能够得知,XCode支持视图,复杂查询或者多表查询能够经过视图变相解决,不过通常不推荐这么作。增删改查等操做,XCode实际上经过实体类的元数据等信息,动态拼接SQL,而后调用DAL层实现。 orm
(加载记录集和数据表) htm
(执行插入操做,先拼接SQL,再执行) 对象
此两层结构说明,实际上就是XCode核心原理,任何人均可以根据这个原理来实现本身的ORM。至于结果组件的优劣程度,就看各自的功力以及对细节的考虑了。
XCode的理念是以面向对象为本,因此于本对象有关的东西都写在本对象内。因此XCode是一个充血模型。
全部查询操做(例如Find、FindAll、FindCount)都是静态方法,由于它与具体对象无关;而对象操做(例如Insert、Update、Save、Delete)都是成员方法,由于它与具体对象密切相关,表明着对具体对象的操做。这是XCode模型的基本思想,一样,为实体类编写业务代码的时候,也应该严格遵循该原则,哪些应该是静态的,哪些应该是成员的,要严格分开。
固然,XCode实体类也支持贫血模型的一些操做方式,只不过操做类仍是自身而已,好比Insert、Update、Save、Delete也有静态方法,而参数就是实体类对象。
XCode的模型,还有一个很重要的意义,就是彻底知足数据源组件ObjectDataSource的要求,使得XCode实体类能够直接充当数据提供者。
(成对出现的FindAll/FindCount,参数彻底一摸同样,正是ObjectDataSource的要求)
本文仅是XCode的一个简介,说明XCode的结构和开发模式,更详细的说明请关注后文。
大石头
新生命开发团队
2010-08-20 00:36
做者: 大石头 发表于 2010-09-13 01:27 原文连接
最新新闻:
· 是否该让开发人员跟客户直接交流?(2010-12-21 07:53)
· 亚马逊副总裁跳槽Groupon任CFO(2010-12-21 07:50)
· Gmail语音服务将延长至2011年末(2010-12-21 07:49)
· AOL收购我的档案网站About.me(2010-12-21 07:48)
· AT&T 19.25亿美圆购入高通 700MHz 低频频谱(2010-12-21 07:42)
编辑推荐:Mono又更新了