我对.Net数据提供商和ADO.Net的概述是否正确?

时间:2010-08-06 18:17:14

标签: .net ado.net

最近我不得不在.net数据提供商和ado.net上输入一些文档。我试图获得有关我的发现的反馈。请查看并提供更正或意见。

摘要 这是用于与数据库交互的基本.Net API的高级摘要。作为一个主要具有Java和PHP背景的开发人员,我不清楚ADO.Net如何与OleDb相关,我不知道术语“.Net数据提供者”的含义。我创建这个是因为msdn文档非常重点关注ADO.Net,并没有清楚地说明许多名称空间,接口和类是如何交互的。

.Net数据提供商

  • http://msdn.microsoft.com/en-us/library/a6cd7c08(v=VS.71).aspx
  • .NET Framework数据提供程序是 用于连接数据库, 执行命令和检索 结果。那些结果要么是 直接处理,或放置在 ADO.NET DataSet。
  • 这实际上意味着什么 .Net Data Provider实现了 System.Data中定义的接口 命名空间。
  • .Net Data Provider与a类似 Java中的JDBC驱动程序

System.Data

  • http://msdn.microsoft.com/en-us/library/system.data.aspx 此页面包含的文字 你相信ADO.Net就是核心 然而,.Net数据访问的一部分 现实是ADO.Net就是 最高级别的数据访问和 建立在.Net数据提供商之上 实现中的接口 System.Data。
  • 在我看来,它几乎就像 微软试图掩盖如何 数据库连接工作,这样 用户被使用控件困住 视觉工作室提供。该 System.Data namesapce包含 需要定义的接口 所有.Net数据提供商

System.Data核心接口

  • 的IDbConnection
  • IDbCommand的
  • IDataAdapter
  • 的IDataReader

System.Data实施示例

  • 以下命名空间包括类 实现核心“.Net数据” 提供商“接口定义的 System.Data
  • System.Data.SqlClient的
  • System.Data.OleDb
  • System.Data.Odbc
  • 的IBM.Data.DB2
  • ByteFX.Data.MySqlClient

ADO.Net

  • http://msdn.microsoft.com/en-us/library/27y4ybxw(v=VS.71).aspx
  • ADO.Net是一个数据库查询和 操作API建立在 基本.Net数据提供程序类。 ADO.Net专注于断开连接, 多层数据库交互。
  • 在我看来,核心ADO.Net 课程应该是单独的 像System.Data.ADO这样的命名空间 为了清楚起见。

ADO.Net核心课程

  • 数据集
  • 数据表
  • 的DataColumn
  • 的DataRelation

2 个答案:

答案 0 :(得分:3)

System.Data是“包”,其中包含在.NET中使用“数据提供者”的所有内容。确实,ADO是处理数据的一种策略,但它是.NET中的主要策略。

ADO不是关于特定的数据库技术(因为它不一定是数据库特定的技术),而是关于数据关系的更多信息。术语:Set,Table,Column,Row和Relationship是很好理解的建模术语,ADO.NET使它们成为.NET领域的第一类对象。

数据提供程序提供了用于支持核心ADO.NET概念(表,行等)的低级实现特定详细信息,旨在抽象出如何连接到数据提供程序的直接实现细节。例如,您应该能够以相对较少的努力,在DataTables,DataRows和DataColumns(抛开查询详细信息)方面与Jet数据提供程序交换Jet数据提供程序,以便您的代码受到最小程度的影响。更改。为什么这很重要?因为这意味着您可以使用具有类似命令语义的非同质数据源(即,您可以在具有相同对象的同一应用程序中使用excel电子表格和MySql dbs)。这使得重用和重新利用非常容易且非常直接。

作为一般观点,您可以这样思考系统:

  1. .NET数据提供程序是您从中获取数据的地方。您需要从System.Data导入您的应用使用的每个提供商
  2. ADO.NET类是您将使用表,行,列等的概念。这些与查询,索引等无关。这些是提供者详细信息
  3. 你的应用程序应该很少(我会说从来没有,但总有例外)需要注意提供者,而是专注于消费和生成DataSet,DataTables等。
  4. 希望有所帮助。

答案 1 :(得分:2)

参考:

  

在我看来,它几乎就像   微软试图掩盖如何   数据库连接工作,这样   用户被使用控件困住   由visual studio提供。

第三方提供商的存在并不支持MS试图将我们“陷入”任何事情的想法。

隐藏“数据库连接如何工作”是一种抽象,而不是颠覆性的。