3.3.2 .NET下的O/R Mapping框架的介绍和简单方法
O/R Mapping框架首选在Java世界流行,随后在.NET推出后,一些在Java上的著名的O/R Mapping框架,如Hibernate被移植到了.NET下。另外一些原创的.NET O/R Mapping框架也被逐步开发出来。下面就来介绍几个重要O/R Mapping框架。
1.NHibernate
NHibernate应该是大家最熟悉的.NET O/R Mapping框架。它来自Java上著名且广泛使用的Hibernate。NHibernate采用XML文件配置的方式,为每个对象都需要提供一个映射文件。在定义了对象的数据结构和XML映射文件后,NHibernate就自动产生SQL语句,并确保对象提交到正确的表和字段中去,大量减少开发时人工使用SQL和ADO.NET处理数据的时间。NHibernate可以帮助消除或者包装那些针对特定数据库的SQL代码,并且把结果集从表格的表示形式转换到一系列的对象去。
下面是一个映射的例子:
(对象结构定义User.cs) |
在定义了对象和XML映射文件后,就可以利用NHibernate来持久化对象到数据库了。
得到配置对象:
Configuration config=new Configuration(); |
得到会话工厂对象:
ISessionFactory factory = config.BuildSessionFactory(); |
得到会话对象:
ISession session = factory.OpenSession(); |
如果有必要,就启用事务对象:
ITransaction trans = session.BeginTransaction(); |
创建User的实例,保存到数据库中,并提交事务:
User obj=new User(); |
2.Castle ActiveRecord
Castle是一个混合IoC(反转控制器)框架、O/R Mapping框架和Web MVC框架的一个开源项目(本书后面章节会详细谈到Castle)。目前,Castle已经发布了RC3,可以到http://www.castleproject.org/下载。
ActiveRecord是Castle项目基于NHibernate开发的一套O/R Mapping框架。与NHibernate的重要区别在于ActiveRecord无须HBM映射文件,使用Attribute来描述对象到数据库的映射关系,且ActiveRecord使用了Martin Fowler在《Patterns of Enterprise Application Architecture》中提到的Active Record模式来作为中心设计思想。
下面我们看看ActiveRecord的一个例子:
[ActiveRecord] |
在定义对象的结构后,就可以直接使用了:
初始化ActiveRecord:
XmlConfigurationSource source = |
通过ActiveRecord自动在数据库中创建对应表:
ActiveRecordStarter.CreateSchema(); |
创建一个用户:
User user = new User("admin", "123"); |
修改一个用户的信息:
user.Username=”administrator”; |
3.iBATIS.NET
iBATIS.NET也是由Java中的著名的iBATIS框架移植过来的。这个框架有两个主要的组成部分:一个是SQL Maps,另一个是Data Access Objects。第一部分就是针对O/R Mapping的一种实现。但严格来说,iBATIS.NET并不算真正的O/R Mapping框架,它主要目的是在于系统模型对象与SQL之间的映射关系。也就是说,iBATIS.NET并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定模型对象中。这种方式相对NHibernate更具灵活性,给开发人员更多的自由空间去控制映射的过程。下面我们来看一个例子。
创建一个数据表:
|
字段名称 |
数据类型 |
大 小 |
是否为空 |
|
PER_ID |
Long Integer |
4 |
No |
|
PER_FIRST_NAME |
nvarchar |
40 |
No |
|
PER_LAST_NAME |
nvarchar |
40 |
No |
|
PER_BIRTH_DATE |
DateTime |
8 |
Yes |
|
PER_WEIGHT_KG |
float |
8 |
Yes |
|
PER_HEIGHT_M |
float |
8 |
Yes |
定义一个实体类:
[Serializable] |
编写映射文件,在映射文件中书写SQL语句:
<?xml version="1.0" encoding="utf-8" ?> |
初始化SqlMap对象:
DomSqlMapBuilder d=new DomSqlMapBuilder(); |
得到所有数据:
sm. QueryForList(“SelectByPersonId”,null); |
添加一条数据:
Person p=new Person(); |
4.其他的一些O/R Mapping框架
·Nbear框架中内置的O/R Mapping功能。
·Grove Develop Kit(http://www.grovekit.com)。
·Base4.NET 不仅仅是一个O/R Mapping(http://www.base4.net/)。
·SubSonic 是最近非常流行和一个很特点的框架(http://www.subsonicproject.com/)。
| 回书目 上一节 下一节 |
|
||||
| · 隐私保护技术探讨 · Windows Server 2008专.. · WCF开发基础 · Linux——从菜鸟到高手 · 微软出价446亿美元收购.. · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 微软Forefront企业安全.. |
· 如何优化IT 控制能耗 · 国际文档格式标准开战 · CISSP认证成长之路 · 珊瑚虫QQ作者侵权案开庭 · 贝恩资本携手华为22亿.. · 802.11n:下一代的无线.. · 体验Visual Studio 200.. · 运营商封堵非法ADSL共享 |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · 子网掩码教程 · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 中间件应用技术专题 · 深入了解PGP加密技术 · 病毒查杀专题 |
· VPN技术 · 国际文档格式标准开战 · SSL VPN详细知识 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · 木马原理与防范 · ADSL应用面面俱到 |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · 中间件应用技术专题 · SQL Server 2008/2005.. · 子网掩码教程 · RAID——磁盘阵列基础 · 身份认证技术 · 病毒查杀专题 |
· 清除流氓软件——51CTO.. · SSL VPN详细知识 · Sniffer安全技术从入门.. · VPN技术 · 了解统一威胁管理(UTM).. · 网络钓鱼 · ADSL应用面面俱到 · ADSL应用面面俱到 |
|||