|
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对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。
Command:Command 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。
DataAdapter: DataSetCommand对象主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。
DataSet:DataSet 这个对象可以视为一个暂存区(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 { get; set; }
28
29 /// <summary>
30 /// 数据库连接对象
31 /// </summary>
32 IDbConnection Connection { get; set; }
33
34 /// <summary>
35 /// 数据库操作命令
36 /// </summary>
37 IDbCommand Command { get; set; }
38
39 /// <summary>
40 /// 数据库操作适配器
41 /// </summary>
42 IDbDataAdapter Adapter { get; set; }
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映射框架总结--数据库操作库(精修版),转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。