ADO.NET经过长时间的发展,很多用户都很了解ADO.NET数据对象模型了,这里我发表一下个人理解,和大家讨论讨论。ADO.NET如何承接客户端的数据请求,又如何完成数据源的访问?可以通过图来说明。这里提到的数据源是个更大的概念,数据库是数据源中的一种,Excel文件也可能是数据源。
ADO.NET的承上启下作用图
ADO.NET通过Connection对象与数据源相连接,完成架设线路的作用。Command和DataAdapter对象利用这个Connection对象发送命令信号给数据源,这个命令信号可能是SQL语句,也可能是存储过程的名字,由数据源执行完成。如果命令信号要求返回数据,客户端就可以利用DataReader或者DataSet对象访问得到的数据。如果命令信号是其他操作,客户端就可以直接通过Command甚至Connection对象完成操作。
前面提到ADO.NET中的几个对象。那么完整的ADO.NET数据对象模型应该是什么样的呢?我们通过图来详细了解。
ADO.NET数据对象模型图
整个ADO.NET数据对象模型分为两大部分。***部分是.NET Framework数据提供程序部分,第二部分是作为客户端本地缓存的数据集部分。.NET Framework数据提供程序部分包括的对象有Connection对象,Connection对象又可以产生事务对象——Command对象,与Command对象伴生的参数对象,DataReader对象,DataAdapter对象,与DataAdapter对象伴生的SelectCommand、InsertCommand、UpdateCommand、DeleteCommand对象。数据提供程序部分负责建立连接、发布命令、传输数据等功能。
#T#本地缓存数据集部分包括DataSet对象,DataSet对象在本地相当于一个小型数据库,因此DataSet对象由数据表及表关系组成,所以DataSet对象包含DataTable对象和DataRelation对象,而数据表又包含行和列以及约束等结构,所以DataTable对象包含DataRow、DataColumn和Constraint对象。本地缓存数据集部分可以用来临时存储本地数据,这些数据可以是从数据库获取的,也可以是本地产生的,还可以是被修改的数据。在借助DataRelation和Constraint对象情况下,客户端可以像访问关系型数据那样访问本地缓存数据集。
ADO.NET中应用XML支持DataSet对象,这是由于XML主要关注的是关系和分层的结构化数据。DataSet的内容可以以XML文档的形式写出,也可以将XML文档的内容读入到DataSet中。