作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角色。本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET的主要组成部分。


目录

  • 什么是ADO.NET?
  • 理清ADO.NET与ADO的关系
  • 认识ADO.NET最核心的组成部分
  • ADO.NET扩展

1. 什么是ADO.NET?

简单的讲,ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。对于ADO.NET来说,可以处理数据源是多样的。可以是应用程序唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如文本文件、XML、关系数据库等)。

具体来说,ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。

作为.NET框架的重要组成部分,ADO.NET 类封装在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,需要引用System.Data.dll 和 System.Xml.dll。

2. 理清ADO.NET与ADO的关系

作为一个普通的缩略词,"ADO.NET”并只不是"ADO”的简单升级版本。严格的讲,ADO.NET和ADO是两种截然不同的数据访问方式

ADO的全称是Activex Data Objects,它是早期(.NET还未实施)开发人员用来访问数据的组件。随着.NET的发展,ADO.NET顺其自然地以其显著的优越性逐步取代ADO。从技术层面讲,ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。

虽然大多数基于 .NET 的新应用程序将使用 ADO.NET 来编写,但 .NET 程序员仍然可以通过 .NET COM 互操作性服务来使用 ADO。

3. 认识ADO.NET最核心的组成部分

System.Data命名空间提供了不同的ADO.NET类,它们既分工明确,又相互协作地提供表格数据的访问服务。该类库包含两组重要的类:一组负责处理软件内部的实际数据(DataSet),一组负责与外部数据系统通信(Data Provider)。具体架构如下图所示:

图1.3.1  ADO.NET核心组件

DataSet 是 ADO.NET 的非连接(断开)结构的核心组件。DataSet 的设计目的很明确:为了实现独立于任何数据源的数据访问。因此,ADO.NET结构可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关 DataTable 对象中数据的关系信息组成。

ADO.NET 结构的另一个核心元素是 .NET 数据提供程序(Data Provider)。具体包括:

  • Connection 对象提供与数据源的连接。
  • Command对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。
  • DataReader 对象从数据源中提供快速的,只读的数据流。
  • DataAdapter 对象提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。

4. ADO.NET扩展

提供一致的数据访问,是使用ADO.NET的一个关键的优势。但是对于开发人员来说,更大的优势是通过ADO.NET将管理的数据作为对象来说处理。 表中的每个字段都是强类型成员,与.NET 通用类型系统(Common Type System)完全兼容。个别的字段甚至可以作为局部变量来使用。数据行或者其他的数据集对象是标准的.NET 集合(Collections),可以用标准的迭代方法处理。

Entity Framework和LINQ是微软为了提高ADO.NET核心功能而建立的两个新的工具。需要注意的是,它们并不是ADO.NET的基本组成部分

Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以及支持 Entity Framework 的数据提供者 (provider),让数据访问的工作得以顺利与完整的进行。

LINQ允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。LINQ是一个通用的数据工具,可以让你非常容易地融合不同数据源的数据,并得到单一的数据结果集。

作者:可米小子 
出处:http://liuhaorain.cnblogs.com 
欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能推荐或关注。

转载于:https://www.cnblogs.com/xwj517537691/archive/2013/05/07/3064848.html

你必须知道的ADO.NET(一) 初识ADO.NET相关推荐

  1. 必须知道的ADO.NET 数据库连接池

    http://www.cnblogs.com/liuhaorain/archive/2012/02/19/2353110.html 题外话 通过前几章的学习,不知道大家对ADO.NET有一定的了解了没 ...

  2. [你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望

    总体来说,这是一篇介绍性的文章,不会涉及过多技术细节和研究过程.但是,作为拉开序幕的第一页,本文以提纲挈领的方式展开对.NET 4.0的初次体验.从What's new的角度,开始我对.NET 4.0 ...

  3. [你必须知道的.NET]第二十回:学习方法论

    本文,源自我回答刚毕业朋友关于.NET学习疑惑的回复邮件. 本文,其实早计划在<你必须知道的.NET>写作之初的后记部分,但是因为个中原因未能如愿,算是补上本书的遗憾之一. 本文,作为[& ...

  4. 必须知道的linux命令,29 个你必须知道的 Linux 命令

    虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...

  5. 程序员们都必须知道的8种通用数据结构

    数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作. 数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系统都使用数据结构. 此外, ...

  6. 你必须知道的.net学习总结

    着几天在看<你必须知道的.net>,这次看书和以往不同,以前是把自己喜欢的章节看了.但是这次决定把一本书详细的看看. 在第一章第一节中主要讲的是"对象",我想每一个程序 ...

  7. 数据科学中必须知道的5个关于奇异值分解(SVD)的应用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 前言:本文为大家介绍了5个关于奇异值 ...

  8. [你必须知道的css系列]第一回:丰富的利器2:CSS选择符之子选择符、相邻选择符...

    对了,接下来要讲的属性选择符,相邻选择符,子对象选择符可能大家稍微有点陌生了,这当然也是有原因的,因为IE6及以下的浏览器并不支持这几个选择符,而 大多数从事这方面工作的技术人员,多数时候还是主要考虑 ...

  9. [你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考

    发布日期:2008.8.27 作者:Anytao  © 2008 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 走钢丝的人,在刺激中体验快感.带着问题思考,在问 ...

  10. [你必须知道的.NET]第二十一回:认识全面的null

    <你必须知道的.NET>网站 | Anytao技术博客  [你必须知道的.NET]第二十一回:认识全面的null 发布日期:2008.7.31 作者:Anytao © 2008 Anyta ...

最新文章

  1. mysql 默认密码_mysql数据库安装
  2. 关于通配泛型类型有几种_5.7 泛型通配符和类型参数的范围
  3. 并发编程-concurrent指南-线程池ExecutorService的使用
  4. SpringMVC视图解析器(转)
  5. Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(
  6. 最大流问题之FF算法与EK算法
  7. 数据结构与算法笔记 二叉树、二叉搜索树、二叉平衡树的区分与关系
  8. 千斤顶装配图怎么画_机械制图——绘制千斤顶装配图教程.ppt
  9. Fabric CA源码和镜像编译
  10. 随机预言机模型与标准模型
  11. 复合调味品,是年轻人新的追逐吗?
  12. 《人工智能原理》读书笔记:第1章 绪论
  13. 计算机组成与设计chapter3,Chapter 1 计算机概要与技术
  14. 使用Scrapy爬取掘金热门文章的分析和实现
  15. 有哪些适合新手的练手Java项目?
  16. Windows10安装Docker详细步骤
  17. #10049. 「一本通 2.3 例 1」Phone List(trie树应用)
  18. mt4支持python么_py-mt4
  19. 推荐一个超简约、干净又实用的导航网站,支持自定义,重新认识一下你的浏览器起始页吧
  20. Web Scraping with Python 学习笔记8

热门文章

  1. java线程锁的作用,大厂面经合集
  2. 专属于Java程序员的学习福音
  3. 【深度学习】拉格朗日( Lagrange)中值定理
  4. python【力扣LeetCode算法题库】820- 单词的压缩编码
  5. 回归插补法_用均值替换、 回归插补及多重插补进行插补
  6. python连接mongo_Python连接MongoDB操作
  7. windows cannot ftp_免费自动FTP同步软件,6步掌握免费自动FTP同步软件的安装方法...
  8. oracle并行收集统计信息慢,Oracle 学习之性能优化(四)收集统计信息
  9. qt 启动画面显示图片_Qt程序起动画面QSplashScreen
  10. 网络推广网站解析为什么有些网站有收录却没流量?