`

微软企业库 数据访问模块

 
阅读更多

 

  本篇讲述如何在应用中使用数据访问模块。首先,讲述如何配置模块并且和应用整合;其次是,如何使用数据访问模块完成常用的功能,例如,获取单条数据,或者是使用DataSet返回多条数据;最后,讲述一些关系连接管理、参数处理、异常处理的主题。

  主要包括下面的主题:

  •   配置模块
  •   在应用中添加代码
  •   创建Database对象
  •   创建DbCommand对象
  •   管理连接
  •   使用TransactionScope类
  •   创建分布式的数据库应用
  •   异常处理
  •   参数处理

  1、配置模块

  

 

  

  默认情况下,配置信息是不加密的,里面的用户名和密码等敏感信息是明文的。虽然config文件从外界是访问不到的,但是还是要做好加密工作。可以对文件进行加密,或者是配置节加密,以及读写的权限控制。

  2、配置信息的的结构

  

代码
<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> --><configSections> 
  <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
  <section name="oracleConnectionSettings" type="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.Configuration.OracleConnectionSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
</configSections>

 

 

  3、添加应用代码

  数据访问模块支持访问数据库的常用方案。

  首先要做一些准备工作,然后就是创建Database对象,调用适当的方法来完成所需功能。

  准备工作:

  1)添加模块的程序集引用。添加对程序集Microsoft.Practices.EnterpriseLibrary.Data.dll的引用。

  2)添加对程序集Microsoft.Practices.EnterpriseLibrary.Common.dll和Microsoft.Practices.ObjectBuilder2.dll的引用。

  3)在代码文件中添加命名空间:

  

 

<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> -->using Microsoft.Practices.EnterpriseLibrary.Data; 
using System.Data;

 

  4、创建Database对象

  所有的数据访问方法都是通过Database对象执行的,你可以使用DatabaseFactory类创建Database对象。工厂创建的具体的Database类型决定于应用的配置信息。另外你可以使用Unity创建数据访问模块的对象。

  你可以使用配置工具制定默认的Database实例,当DatabaseFactory调用没有参数的CreateDatabase方法的时候就会创建默认的Database实例。下面的代码是没有使用Unity的情况下创建Database对象。

  

 

<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> -->Database db = DatabaseFactory.CreateDatabase();

 

  也可以指定名称来创建Database对象,例如:

  

 

 

<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> -->Database db = DatabaseFactory.CreateDatabase("Sales");

 

  你也可以通过连接字符串创建指定类型的Database对象。在下面的代码中,假定GetConnectionString方法可以获取一个Sql Server的连接字符串,就可以用SqlDatabase类的构造函数创建SqlDatabase对象。

  

代码
<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> -->// Assume the method GetConnectionString exists in your application and // returns a valid connection string.
 string myConnectionString = GetConnectionString(); 
SqlDatabase sqlDatabase = new SqlDatabase(myConnectionString);

 

  5、创建DbCommand对象

  创建DbCommand对象的方法分类两类:

  •   一类是代表存储过程调用的DbCommand对象
  •   一类是代表SQL语句的DbCommand对象

  为存储过程创建DbCommand的方法还提供了参数缓存。

  创建DbCommand对象的方法都在Database类上,包括:

  •   GetStoredProcCommand,为存储过程创建一个DbCommand对象

 

Database db = DatabaseFactory.CreateDatabase();

DbCommand cmd = db.GetStoredProcCommand("GetProductsByCategory");

  •   GetSqlStringCommand,为SQL语句创建一个DbCommand对象

  

 

<!--<br/ /> <br/ /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ /> http://www.CodeHighlighter.com/<br/ /> <br/ /> -->Database db = DatabaseFactory.CreateDatabase(); 
string sql = "Select CustomerID, LastName, FirstName From Customers";
DbCommand cmd = db.GetSqlStringCommand(sql);

 

      6、连接管理

      数据库连接是有限的资源,对于可扩展的应用来说,正确的管理他们是必要的。只在需要的时候保持连接打开、不需要时候关闭他们是一个很好的实践。Database类的大部分方法在每次调用数据库的时候都需要处理打开和关闭数据库。应用中不需要包含这方面的处理代码。默认情况下,由于性能原因,当你使用close方法的时候,ADO.NET会将连接返回给连接池,而不是关闭它们。因此,你不需要缓存Database对象。

   例如,执行ExecuteDataSet方法返回一个包含数据的DataSet对象。将返回一个本地的拷贝,ExecuteDataSet方法将会打开一个连接,加载数据到DataSet,然后再返回结果之前关闭链结。

  

 

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->Database db = DatabaseFactory.CreateDatabase(); 
string sql = "Select ProductID, ProductName From Products"
DbCommand cmd = db.GetSqlStringCommand(sql); 
// No need to open the connection; just make the call. 
DataSet customerDataSet = db.ExecuteDataSet(cmd);

 

   但是,也有另外一种情况,什么时候关闭连接不是很清楚。例如,ExecuteReader方法。这个方法返回一个实现IDataReader接口的对象。关闭DataReader之后,连接会自动关闭。

  

 

复制代码
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->Database db = DatabaseFactory.CreateDatabase(); 
DbCommand cmd = db.GetSqlStringCommand("Select Name, Address From Customers"); 
using (IDataReader reader = db.ExecuteReader(cmd)) 
  // Process results 
}
复制代码

 

  7、使用TransactionScope类

  Database类中的一些方法使用了.NET 框架的TransactionScope类。这个类自动将数据库调用组合成一个事务,

  

 

 

 

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) 
  int dRows = db.ExecuteNonQuery(CommandType.Text, insertString); 
  dRows = db.ExecuteNonQuery(CommandType.Text, insertString2); 
}

 

  这两个ExecuteNonQuery方法插入数据的方法组成一个事务。TransactionScope类创建一个本地的,轻量的事务。假定你在事务中的数据库调用使用同一个连接。这意味着,不用传递DbTransaction实例,只是简单的传递连接,.NET框架自动为你执行的每个command创建事务。

  企业库在正常情况下,为每一个请求打开和关系连接。

 

转自:http://www.cnblogs.com/virusswb/archive/2010/05/04/Enterprise-Library-4-1-DataAccess-2.html

 

分享到:
评论

相关推荐

    微软企业库5.0操作日志和缓存模块

    总结来说,微软企业库5.0的操作日志模块提供了一种标准化的日志记录方式,而缓存模块则优化了数据访问性能。这两个模块都是软件开发中常用的工具,通过合理使用,能提升代码质量和系统效率。在实际开发中,结合VS...

    [EntLib]微软企业库5 0 学习之路 第八步 使用Configuration Setting模块等多种方式分类管理企业库配置信息

    首先,我们需要将每个模块的配置信息从web.config中提取出来,创建一个独立的配置文件,如上面的例子所示,数据访问模块的配置文件包含`configSections`、`dataConfiguration`和`connectionStrings`。接着,在企业库...

    微软企业库 5.0 源码

    微软企业库(Microsoft Enterprise Library)是微软发布的一套开源软件开发框架,主要目的是为了帮助开发者在.NET平台上更方便地实现一些常见的企业级功能,如日志记录、异常处理、数据访问、缓存管理等。...

    微软企业库

    企业库的优势在于其模块化的结构,每个模块针对特定的开发问题,如数据访问应用模块支持ADO.NET的常用功能。此外,企业库的设计遵循一致性、可扩展性、易用性和集成性原则,确保开发者能够轻松理解和自定义行为。...

    基于微软企业库的开发框架数据库

    微软企业库是一套面向.NET Framework的应用程序开发组件,它包括了数据访问、缓存管理、日志记录、验证等多个实用模块,是.NET平台上常见的开发工具之一。 **详细知识点:** 1. **微软企业库(Enterprise Library...

    微软企业库5.0学习之路

    ### 微软企业库5.0学习之路 #### 第一步:基本入门 企业库是由微软提供的一个强大的开发框架,主要用于解决企业级应用开发中的常见问题。企业库5.0相较于之前的版本进行了诸多改进,其中最重要的一项是引入了依赖...

    微软企业库5.0_学习之路

    ### 微软企业库5.0缓存模块详解 #### 一、缓存的重要性与应用场景 缓存技术作为提升应用程序性能的重要手段之一,在现代软件开发中占据着举足轻重的地位。合理的缓存策略不仅可以显著提高应用响应速度,还能有效...

    [EntLib]微软企业库5.0 学习之路——第六步、使用Validation模块进行服务器端数据验证

    微软企业库5.0是微软提供的一套强大的应用程序框架,用于帮助开发者更有效地实现常见的软件开发任务,如日志记录、配置管理、数据访问等。其中,Validation模块专门用于数据验证,确保输入的数据符合业务规则和逻辑...

    微软企业库6.0源码

    微软企业库6.0的核心特点包括以下几个模块: 1. **数据访问应用块**:提供了数据库操作的抽象层,包括事务管理、数据访问对象(DAO)、存储过程的调用等,使得开发人员可以更容易地处理数据库交互。 2. **验证应用...

    微软企业库5.0 学习之路(全集)

    微软企业库5.0(Enterprise Library 5.0)是微软公司发布的一套用于.NET Framework的应用程序开发框架,旨在帮助开发者更高效、更规范地管理常见的软件开发问题,特别是关注于应用程序的基础设施部分,如数据访问、...

    企业库学习源码 企业库学习 企业库 微软企业库

    企业库主要包含以下几个核心模块: 1. **数据访问应用块(Data Access Application Block, DAAB)**:提供了数据库操作的抽象层,支持多种数据库供应商,如SQL Server、Oracle等,简化了数据访问代码的编写。 2. *...

    微软企业库增删改查例子

    【微软企业库(Enterprise Library)】是微软提供的一套用于构建企业级应用程序的软件开发框架,它包含了多种可重用的、预配置的编程模块,主要用于解决常见的应用程序设计问题,如数据访问、日志记录、异常处理、...

    微软企业库(用于连接数据库的DLL文件)

    4. **Microsoft.Practices.EnterpriseLibrary.Data.dll**:这是数据库访问模块,它提供了一种统一的方式来与各种数据库系统交互。通过使用ADO.NET抽象,该库简化了数据库连接、事务管理和命令执行,降低了对数据库...

    [EntLib]微软企业库5 0 学习之路 第四步 使用缓存提高网站的性能(EntLib Caching

    总结来说,微软企业库5.0的Caching模块提供了灵活的缓存策略和存储选项,可以帮助开发人员有效地优化应用程序性能,尤其是在处理大量数据或频繁数据库交互的场景下。通过理解其核心概念和正确使用,可以显著提升应用...

    微软企业库4.1API帮助文档

    **微软企业库(Enterprise Library)**是微软模式与实践组(patterns & practices team)发布的一套软件开发框架,它旨在帮助企业简化.NET平台上的应用程序开发过程,并通过提供一系列可复用的应用程序模块来提升...

    实体框架+微软企业库+MVC

    它包括数据访问、缓存管理、日志记录、异常处理等多个模块,为开发者提供了标准化的解决方案。“MVC模式在_NET框架中的应用与实现.pdf”可能会详细阐述如何在.NET MVC项目中集成企业库,以提升应用程序的稳定性和可...

    C# 微软企业库(官方)

    《C#微软企业库:深度探索与应用》 C#微软企业库,全称为Enterprise Library,是微软开发的一套开源框架,旨在简化企业级应用程序的常见编程任务,提高开发效率和代码质量。这个库提供了丰富的组件和服务,涵盖了...

    微软企业库5.0说明文档,英文版

    微软企业库(Microsoft Enterprise Library)是微软公司发布的一套用于.NET Framework的应用程序开发框架,它提供了许多可重用的软件组件,旨在简化常见的应用程序开发任务,尤其是与企业级应用程序相关的复杂性,如...

    微软企业库5.0

    微软企业库(Enterprise Library)是微软提供的一套用于.NET Framework应用程序开发的开源工具集,它旨在简化常见的软件设计模式,并提供了实现这些模式的现成组件。这个版本是5.0,通常称为“Microsoft Enterprise ...

    微软企业库 DAAB 网上书店 网站

    总结来说,“微软企业库 DAAB 网上书店 网站”案例是一个很好的实践示例,它演示了如何利用DAAB简化.NET应用程序的数据访问,并且展示了两层架构的设计原则。通过学习这个案例,开发者可以更好地理解和运用微软企业...

Global site tag (gtag.js) - Google Analytics