ORM映射框架总结--数据库操作库(精修版)

1.       ORM数据库操作原理

前面已经介绍过了个人ORM映射框架中的三个核心库:

实体数据库 映射特性关系:

http://www.cnblogs.com/qingyuan/archive/2010/04/02/1702998.html

 实体分析器:

http://www.cnblogs.com/qingyuan/archive/2010/04/05/1704546.html

Sql 语句生成组建:

http://www.cnblogs.com/qingyuan/archive/2010/04/16/1713658.html

至于这篇文章也就是这四个组件中的最后一个了------- 数据库操作库。目前.NET 中对于数据库操作的模板或组件太多了,先不说微软的Linqto SQL,Linq to Entity, 还有开源组织的Hibernate克隆版NHibernate,以及前些天突然冒出来的ALinq, 号称压过Linq,有时间再研究一下。其实这些看是强大的组件框架,在其外表下面都是如出一辙,他们都是在ADO.NET中进行的封装。

不过在这个数据库操作中,都是ADO.NET进行数据库操作,但是对于对象的查询,都是泛化了的类型,也就是说我们不知道具体查询的是那张表,或者说是查询结果集是封装到那个对象,这就是本文要解决的问题。

  2.       ADO.NET 介绍

感觉在这里进行ADO.NET的讲解似乎是多次一举,我相信ADO.NET是每个ASP.NET 程序员必会的基本技能。但是这里还是简单介绍其五个核心对象吧。

Connection: Connection对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。

CommandCommand 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。

DataAdapter: DataSetCommand对象主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。

DataSetDataSet 这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataSetCommand 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataSetCommand 对象上,本身不具备和数据源沟通的能力。

DataReader: 当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好.

老生常谈的说了一遍ADO.NET 的五个核心对象,这里主要目的是为了更好的了解此篇文章。我想现在用Linq to SQL Linq to Entity 的人太多了,或许都忘记了ADO.NET 的基本操作,其实我本人也是如此,一段时间不是用好多忘记了,这里再次复习一遍ADO.NET 能更好的理解此篇文章。

  3.       数据库加载驱动操作接口

该数据库操作接口很简单,就是封装了一些数据库操作的常用接口和命令,并定义了一些数据库连接和关闭的方法,并控制了数据库事务提交和回滚的方法。不过在这里的方法实现中我并没有对事务进行处理,如果对本文有兴趣的人可以在后期的文章中关注,我会对此进行补充。

下面简单看看数据库加载驱动接口:

数据库加载驱动接口 1 /**
 2  * 2010-2-2
 3  * 
 4  * 情 缘
 5  * 
 6  * 数据库提供加载驱动接口,该接口继承IDisposable,
 7  * 用于释放对象占用的内存。该接口定义了数据库链接
 8  * 语句,链接对象,执行命令,适配器模式接口。同时
 9  * 还提供了打开数据库连接和关闭的方法,还有三个方
10  * 法是用于控制数据库操作事务
11  * 
12  * */
13 
14  using System;
15  using System.Collections.Generic;
16  using System.Linq;
17  using System.Text;
18  using System.Data;
19 
20  namespace CommonData.Data.Core
21 {
22     public interface IDbProvider:IDisposable
23     {
24         /// <summary>
25         /// 数据库链接语句
26         /// </summary>
27          string ConnectionString { getset; }
28 
29         /// <summary>
30         /// 数据库连接对象
31         /// </summary>
32          IDbConnection Connection { getset; }
33 
34         /// <summary>
35         /// 数据库操作命令
36         /// </summary>
37          IDbCommand Command { getset; }
38 
39         /// <summary>
40         /// 数据库操作适配器
41         /// </summary>
42          IDbDataAdapter Adapter { getset; }
43 
44         /// <summary>
45         /// 打开数据库连接方法
46         /// </summary>
47          void Open();
48 
49         /// <summary>
50         /// 关闭数据库连接方法
51         /// </summary>
52          void Close();
53 
54         /// <summary>
55         /// 开始事务控制方法
56         /// </summary>
57          void BeginTransaction();
58 
59         /// <summary>
60         /// 事务回滚方法
61         /// </summary>
62          void RollBack();
63 
64         /// <summary>
65         /// 事务提交方法
66         /// </summary>
67          void Commit();
68     }
69 }
70  

NET技术ORM映射框架总结--数据库操作库(精修版),转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。