MSDN 原文出处

https://msdn.microsoft.com/zh-cn/library/27y4ybxw.aspx

.NET Framework 4.6 and 4.5

其他版本

以前,数据处理主要依赖于基于连接的双层模型。 随着数据处理越来越多地使用多层体系结构,程序员正在向断开方法转换,以便为他们的应用程序提供更好的可伸缩性。

ADO.NET 组件

ADO.NET 3.0 用于访问和操作数据的两个主要组件是 .NET Framework 数据提供程序和 DataSet。

.NET Framework 数据提供程序

.NET Framework 数据提供程序是专门为数据操作以及快速、只进、只读访问数据而设计的组件。 Connection 对象提供到数据源的连接。 使用 Command 对象可以访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。 DataReader 可从数据源提供高性能的数据流。 最后,DataAdapter 在 DataSet 对象和数据源之间起到桥梁作用。 DataAdapter 使用 Command 对象在数据源中执行 SQL 命令以向 DataSet 中加载数据,并将对 DataSet 中数据的更改协调回数据源。 有关详细信息,请参阅.NET Framework 数据提供程序在 ADO.NET 中检索和修改数据

DataSet

ADO.NET DataSet 是专门为独立于任何数据源的数据访问而设计的。 因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。 DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。 有关详细信息,请参阅DataSet、DataTable 和 DataView

下图阐释了 .NET Framework 数据提供程序和 DataSet 之间的关系。

ADO.NET 体系结构

选择 DataReader 或 DataSet

在决定应用程序应使用 DataReader(请参见使用 DataReader 检索数据)还是应使用 DataSet(请参见DataSet、DataTable 和 DataView)时,应考虑应用程序所需的功能类型。 使用 DataSet 可执行以下操作:

  • 在应用程序中将数据缓存在本地,以便可以对数据进行处理。 如果只需要读取查询结果,则 DataReader 是更好的选择。

  • 在层间或从 XML Web services 对数据进行远程处理。

  • 与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据。

  • 对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。

如果不需要 DataSet 所提供的功能,则可以通过使用 DataReader 以只进、只读方式返回数据,从而提高应用程序的性能。 虽然 DataAdapter 使用 DataReader 来填充 DataSet 的内容(请参见从 DataAdapter 填充 DataSet),但使用 DataReader 可以提升性能,因为这样可以节省 DataSet 所使用的内存,并将省去创建 DataSet 并填充其内容所需的处理。

LINQ to DataSet

LINQ to DataSet 提供对在 DataSet 对象中缓存的数据的查询功能和编译时类型检查。 它使您可以使用一种 .NET Framework 开发语言(例如 C# 或 Visual Basic)来编写查询。 有关详细信息,请参阅LINQ to DataSet

LINQ to SQL

LINQ to SQL 支持查询无需使用中间概念模型即可映射到关系数据库数据结构的对象模型。 每个表均由独立的类表示,从而使对象模型与关系数据库架构紧密地耦合在一起。 LINQ to SQL 可将对象模型中的语言集成查询转换为 Transact-SQL 并将其发送到数据库以便执行。 当数据库返回结果时,LINQ to SQL 将结果转换回对象。 有关详细信息,请参阅LINQ to SQL [LINQ to SQL]

ADO.NET Entity Framework

ADO.NET 实体框架专门用于让开发人员能够通过针对概念应用程序模型进行编程(而不是直接针对关系存储架构进行编程)来创建数据访问应用程序。 这样做的目的是减少面向数据的应用程序所需的编码和维护工作。 有关详细信息,请参阅ADO.NET 实体框架

WCF 数据服务

WCF 数据服务 用于在 Web 或 Intranet 上部署数据服务。 这些数据将按照实体数据模型的规范组织成不同的实体和关系。 在此模型上部署的数据可通过标准的 HTTP 协议进行寻址。 有关详细信息,请参阅WCF 数据服务 4.5

XML 和 ADO.NET

ADO.NET 利用 XML 的功能来提供对数据的断开连接的访问。 ADO.NET 是与 .NET Framework 中的 XML 类一起设计的,它们都是同一个体系结构的组件。

ADO.NET 和 .NET Framework 中的 XML 类集中于 DataSet 对象中。 无论 XML 源是文件还是 XML 流,都可以用其中的数据来填充 DataSet。 无论 DataSet 中数据的源是什么,都可以将 DataSet 作为符合万维网联合会 (W3C) 的 XML 进行编写,其架构作为 XML 架构定义语言 (XSD) 架构。 由于 DataSet 的本机序列化格式为 XML,因此它是用于在层间移动数据的绝佳媒介,这使 DataSet 成为了与 XML Web 服务之间远程处理数据和架构上下文的最佳选择。 有关详细信息,请参阅XML 文档和数据

ADO.NET 结构 集中数据库联接结构的更多相关文章

  1. hbase非结构化数据库与结构化数据库比较

    目的:了解hbase与支持海量数据查询的特性以及实现方式 传统关系型数据库特点及局限 传统数据库事务性特别强,要求数据完整性及安全性,造成系统可用性以及伸缩性大打折扣.对于高并发的访问量,数据库性能不 ...

  2. 使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较、同步

    将测试版的项目同步(部署)到正式版的时候,两个数据库的结构比较与同步时,如果修改数据库的时候没有记录好修改了那些表,很难将两个数据库进行同步 RedGate Sql Compare使用简介说明: 1. ...

  3. 用户中心mysql数据库表结构的脚本

    /* Navicat MySQL Data Transfer Source Server : rm-m5e3xn7k26i026e75o.mysql.rds.aliyuncs.com Source S ...

  4. mysql数据库表结构导出

    mysql数据库表结构导出 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据 mysqldump -h localh ...

  5. magereverse - Magento数据库表结构

    Magento数据库表结构相当复杂,250多张表包含了非常多的表关联关系,让刚刚接触Magento的开发者来说真的非常头疼.往往是看到一个产品的各种属性分散在非常多的表中,找不到任何办法来取出它们的数 ...

  6. [转]oracle学习入门系列之五内存结构、数据库结构、进程

    原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...

  7. 为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的,于是我就去搜了一下,就搜到了一篇帖子, ...

  8. activiti数据库表结构全貌解析

    http://www.jianshu.com/p/e6971e8a8dad 下面本人介绍一些activiti这款开源流程设计引擎的数据库表结构,首先阐述:我们刚开始接触或者使用一个新的东西(技术)时我 ...

  9. K3数据库表结构

    K3数据库表结构查看方法,直接在数据库中打开表 t_TableDescription,其中即各表及其与K3功能的对应关系 也可直接查询: select * from t_TableDescriptio ...

随机推荐

  1. SSH连接问题

    新安装的ubuntu14.04无法使用root用户ssh连接,显示ssh root permission denied 解决方法: /etc/ssh/sshd_confg: PermitRootLog ...

  2. maven Spring获取不到配置文件

    如题: 如果在maven项目中,Spring获取不到配置文件, 把配置文件放到.src/main/resource文件夹下即可 import org.springframework.context.s ...

  3. js控制TR的显示隐藏

    在很多现实的场景中,有的文本框我们希望在选择“是”的按钮之后才出现,这就需要js控制TR的隐藏和显示,如何控制,本文为大家揭晓 下文分享的一段代码:选择是的按钮就显示身高和体重的文本框的代码.注意:r ...

  4. HDU2176尼姆博弈

    HDU2176 http://acm.hdu.edu.cn/showproblem.php?pid=2176 假设有3个数,a[0],a[1],a[2];那么ans=a[0]^a[1]^a[2];若a ...

  5. C#中char[]与string之间的转换

    string 转换成 Char[] string ss = "abcdefg"; char[] cc = ss.ToCharArray(); Char[] 转换成string st ...

  6. Unity球形插值Slerp解析

    Unity球形插值,官方有个太阳升降的例子: http://docs.unity3d.com/ScriptReference/Vector3.Slerp.html 一开始主观认为这个球形插值Slerp ...

  7. 百度富文本编辑器UEditor安装配置全过程

    网站开发时富文本编辑器是必不可少的,他可以让用户自行编辑内容的样式然后上传到后台!下面我们来介绍如何安装使用百度富文本编辑器 一.下载并且设置百度富文本编辑器的样式     你可以去百度UEditor ...

  8. 慕课网-安卓工程师初养成-4-8 Java循环语句之 do...while

    do...while 循环与 while 循环语法有些类似,但执行过程差别比较大. 语法:  执行过程: <1>. 先执行一遍循环操作,然后判断循环条件是否成立 <2>. 如果 ...

  9. iOS检测网络连接状态

    官方Demo下载地址:https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip 将Reachab ...

  10. 洛谷P2724 联系 Contact

    P2724 联系 Contact 17通过 86提交 题目提供者该用户不存在 标签 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 奶牛们开始对用射电望远镜扫描牧场外的宇宙感 ...