注册 登录
Office中国论坛/Access中国论坛 返回首页

zhuyiwen的个人空间 http://www.office-cn.net/?625 [收藏] [复制] [分享] [RSS]

日志

ADO.NET 学习摘录 2013-06-10

已有 1165 次阅读2013-6-10 18:01 |个人分类:.NET

数据适配器处理连接细节,是数据提供程序的组成部分。
数据集不是数据提供程序的组成部分,它就像一只桶,可以装水,但需要外部管道把水引入。换句话说,数据集需要数据适配器来填充数据,以支持对数据源的访问。

每个数据提供程序都有自己的数据适配器,就像有自己的连接、命令和数据读取器一样。

创建数据适配器有 4 种方式:
1、使用无参数的构造函数(以后指定 SQL 和连接)
2、给构造函数传送命令(这里 cmd 是一个 SqlCommand 对象)
3、传送 SQL 字符串和连接
4、传送 SQL 字符串和连接字符串

SqlDataAdapter da = new SqlDataAdapter();
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
SqlDataAdapter da = new SqlDataAdapter(sql, connString);

DataTable 是 System.Data.DataTable 类的实例,它在概念上类似于关系表。DataTable 包含 DataRow 和 DataColumn 集合。通过 DataTable 对象的 Rows 和 Columns 属性可以访问这些内嵌的集合。

DataTable 可以表示数据集集中独立的表,或者作为另一个方法创建的对象(如在数据读取器上调用 GetSchemaTable 方法获得一个 DataTable 对象)。

DataColumn 表示 DataTable 中列的模式,可以用于设置或获取列的属性,如,给 DataColumn 的 DefaulValue 属性赋值,就可以用它设置列的默认值。

使用 DataTable 的Columns 属性可以获得 DataColumn 的集合,其索引器接受列名或基于 0 的索引,如(dt 是一个DataTable 对象):
DataColumn col = dt.Columns["ContactName"];
DataColumn col = dt.Columns[2];

DataRow 代表行中的数据。可以以编程的方式给 DataTable 添加行,更新或删除它们。为了访问 DataTable 中的行,可以使用 Rows 属性,其索引器接受基于 0 的索引,如(dt 是一个 DataTable 对象)
DataRow row = dt.Rows[2];

使用数据集和数据适配器

数据集的构造函数是重载的。
DataSet ds = new DataSet();
DataSet ds = new DataSet("MyDataSet");

如果使用无参数的构造函数,数据集的名称就默认为 NewDataSet。
如果需要多个数据集,最好使用另一个构造函数,并显式地命名它。但也可以使用 DataSetName 属性改变数据集的名称。

填充数据集有两种方式:
1、使用数据集适配器
2、从 XML 文档中读取数据

使用数据适配器填充数据集
// create dataset
DataSet ds = new DataSet();

// create data adapter
// sql: SQL Statement string
// conn: .NET Database connection
SqlDataAdapter da = new SqlDataAdapter(sql, conn);

// fill dataset
// fill dataset and name data table name as "products" 
da.Fill(ds, "products");

// get data table
DataTable dt = ds.Tables["products"];

// display data
foreach (DataRow row in dt.Rows)
{
    foreach (DataColumn col in dt.Columns)
    {
        Console.WriteLine(row[col]);
    }
}

使用数据读取器的 Fill 方法来访问数据库连接以获取数据,然后使用它们填充到数据集的数据表中,并赋于其数据表的名称。

Fiil 这个方法不只用天填充数据集,它有许多重载版本,如果需要,也可以在没有数据集的情况下填充单个 DataTable。

理解 ADO.NET 3.5 Entity Framework

作为最新版的 ADO.NET 版本,ADO.NET 3.5 之后的工作是要扩展数据库编程的抽象级别,这样就可以彻底去掉数据模型与开发人员用于编写软件应用程序的开发语言之间的不匹配。

令整个任务成功的两项革命性创新是:LINQ 和 ADO.NET 3.5 Entity Framework。ADO.NET 3.5 EF 是 ADO.NET 技术家庭的新成员。

ADO.NET 3.5 EF 允许开发人员通过对象模型而不是传统的逻辑/关系数据模型聚集于数据,以帮助将逻辑数据模式抽象化为概念模型,允许通过一种新的数据提供程序 EntityClient 与模型交互。

ADO.NET 3.5 EF 使用概念层、映射层和逻辑层对逻辑数据库结构进行抽象化。ADO.NET 3.5 EF 允许开发人员编写更少的数据访问代码,减少了维护任务,并以一种对商业更加友好的方式抽象化数据结构。它还可以帮助减少编译时出现的错误,因为它从概念模型中生成的是强类型数据。

ADO.NET 3.5 EF 生成概念模型,开发人员可以使用前面提到的新的数据提供程序 EntityClient 编写代码。EntityClient 沿用了 ADO.NET 对象类似的模型,使用 EntityConnection 和 EntityCommand 对象返回 EntityDataReader。

理解实体数据模型

ADO.NET 3.5 EF 的核心是实体数据模型。ADO.NET 3.5 EF 支持代表数据库关系模式的逻辑存储模型。通常情况下,关系数据库存储的格式与应用程序可以使用的格式不同。这通常会迫使开发人员按照数据库中的数据格式取回数据。然后将数据输入更加适合处理业务规则的业务实体。ADO.NET 3.5 EF 使用映射层连接不同的数据模型。ADO.NET 3.5 EF 的模型中活跃着三个层次:
1、概念层
2、映射层
3、逻辑层

这三个层允许把数据从关系数据库映射为更加面向对象的业务模型。ADO.NET 3.5 EF 使用 XML 文件定义这些层。这些 XML 文件提供的抽象级别可以帮助开发人员使用 OO 概念模型而不是使用传统的关系数据模型编程。

使用概念模式定义语言 (CSDL) 可以在 XML 文件中定义概念模型。CSDL 定义应用程序业务层知道的实体和关系。逻辑模型代表数据库模式,使用存储模式定义语言 (SSDL) 可以在 XML 文件中定义它。使用映射模式语言 (MSL) 定义的映射层完成其他两个层之间的映射。这种映射允许开发人员对概念模型进行编程并将那些指令映射为逻辑模型。

利用实体数据模型

目前绝大多数的应用程序都不能脱离数据库终端存在。应用程序和数据库之间高度依赖,即使它们是紧密耦合的。因此,很明显,对应用程序或数据库的任何变动都会对另一方产生巨大的影响。这种紧密耦合是双向的,修改一方需要同时改动另一方。如果变化映射得不对,应用程序就不能按照预期的方式工作,而且系统会崩溃。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-7-2 14:03 , Processed in 0.081004 second(s), 18 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部