Data Access Application Block 的好处:
1. 减少编写重复累赘代码去执行标准的任务。
2. 帮助在应用程序内部和跨企业应用维护一致的数据访问实践。
3. 降低改变物理数据目标的难度。
4. 减轻开发人员学习不同数据库类型的不同编程模型。 l 当移植应用程序到不同数据库类型时,减少重写代码的数量。
Data Access Application Block依赖项:
1. Data Access Application Block依赖其他的application blocks和Enterprise Library中的代码。
2. Configuration Application Block – Data Access Application Block使用该 Configuration Application Block读取配置信息。
3. Microsoft.Practices.EnterpriseLibrary.Common.dll
4. Microsoft.Practices.EnterpriseLibrary.Data.dll
5. Microsoft.Practices.ObjectBuilder.dll
使用Enteprise Library配置工具创建配置文件:
创建 DataDemo 应用程序,使用Enterprise Library Configuration打开配置app.config文件。在” Connection Strings ”节点单击右键,选择NEW ,新添一个Connection Strings ,设置它的Name 和 ConnectionString.
要配置Connection ,Enterprise Library Configuration提供了简便的操作方式,点击后面按钮,出现如下图的配置窗口, 系统将根据填入的信息自动生成相应的ConnectionString.
Data Access Application Block的特性:
1.简单且有效的方式访问通用数据库。
2.透明支持多数据库类型的开发。
3.映射逻辑数据库实例名和物理连接
4.方便地调整和验证数据库配置设置。
类设计视图 下图来自Enterprise Library文档,描述了DAAB中主要类之间的关系:
Data Access 示例
1. 增加对Microsoft.Practices.EnterpriseLibrary.Data.dll和Microsoft.Practices.EnterpriseLibrary.Common.dll 的引用
2.在代码在添加:
using Microsoft.Parctices.EnterpriseLibrary.Data;
using Microsoft.Parctices.EnterpriseLibrary.Common;
3.调用代码示例:
(1)ExecuteDataSet 方法

Database :抽象类Database定义了通用接口并提供了大量数据访问方法的实现,SqlDatabase, OracleDatabase和Db2Database类均继承Database类,它们分别对各自的数据库服务系统提供了方法,包括不同数据库系统的通用功能和特定数据库系统的特有功能。
DatabaseFactory : DatabaseFactory类提供了静态方法CreateDatabase,用来封装创建Database对象的逻辑。通过使用该工厂方法创建正确的Database对象,客户端代码并没有绑定到特定的数据库类型。DatabaseFactory类使用Configuration Application Block检索必要的配置(app.config)信息,包括要创建的特定Database继承类的类型名称和连接字符串。
(2) ExecuteReader方法

(3) ExecuteNonQuery方法

DbCommand : 表示要对数据源执行的 SQL 语句或存储过程的对象。它是一个数据库操作对象,但并未包含具体的数据库类型,其类型是根据Database所创建的。
(4) ExecuteScalar方法

ExecuteScalar: ExecuteScalar一般用于执行有聚合函数的SQL语句,它以Object类型返回出这条语句的执行结果. 如果结果返回多条数据,则只取第一行第一列的数据.
(5) 执行Transaction


DbConnection:DbConnection类,并不指定其具体的数据库连接类型,他是通过Database对象的CreateConnection方法来实例化,CreateConnection方法会在App.config中去找相应的数据库对象.
(6) 执行StoreProc * 将执行的是一个不带OutPut的存储过程,它返回一个数据集

(7)执行带输出参数的StoreProc * 将执行的是一个带OutPut的存储过程,它返回string
