知识大全 .net中利用数据工厂实现多数据库的操作

Posted 数据库

篇首语:人的影响短暂而微弱,书的影响则广泛而深远。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .net中利用数据工厂实现多数据库的操作相关的知识,希望对你有一定的参考价值。

  在项目的开发过程中 在设计模式的概念还没有出来时 我们那时候在编写程序时 往往如果项目的数据库是采用SQL Server 然后用户又想换其它数据库如Oracle时 我们就需要对其代码进行重写 特别是在一些软件的产品化道路中 我们做出来的产品如果让用户可以有选择的去选取各种数据库 那无疑对用户提供了很大的方便

  自从工厂模式的设计理念出来以后 这一切实现就变得容易得多 如果大家对微软的PETSHOP有研究的话 那就不会陌生了 从PETSHOP 开始 微软就开始采用了多数据库操作系统的应用 数据工厂主要是通过把数据库的连接做成一个抽象的工厂 如命名DALFactory 程序中所有的数据库连接都通过这个工厂类来产生 用来负责根据配置文件动态创建系统所需的数据访问逻辑对象

  我们就拿PETSHOP来举例说明 PETSHOP在安装的时候 会提示我们选择什么数据库 如根据显示的是SQL Server数据库还是Oracle数据库 可以得到nfig的节点中的

  <add key= WebDAL value= PetShop SQLServerDAL /><add key= OrdersDAL value= PetShop SQLServerDAL />

  或者是

  <add key= WebDAL value= PetShop OracleDAL /><add key= OrdersDAL value= PetShop OracleDAL />

  然后在DALFactory项目的DataAccess类中调用数据库的连接 代码如下

  private static readonly string path = ConfigurationManager AppSettings[ WebDAL ];

  然后再看下面的代码

  public static PetShop IDAL ICategory CreateCategory() string className = path + Category ;return (PetShop IDAL ICategory)Assembly Load(path) CreateInstance(className);

  如我们使用的是SQL Server 那么string className = path + Category 返回的就是PetShop SQLServerDAL Category 然后再用Assembly Load加载PetShop SQLServerDAL DLL 同时创建PetShop SQLServerDAL Category的实例 并以接口(PetShop IDAL ICategory)类型返回 这样业务逻辑层BLL调用ICategory接口时就会用PetShop SQLServerDAL Category类的实现代码

  这时候用户就不需要知道后台使用的到底是哪一种数据库 它只要调用接口就行了 在接口中定义了要使用的方法 当调用接口时会根据具体的情况再去调用底层数据访问操作 而现在这个DALFactory就是关键 当业务逻辑层要操作数据库时 DALFactory会根据具体情况再去使用生成的程序集SQLServerDAL或者OracleDAL中的一个 这样做的好处是对于业务逻辑层及WEB页面层的程序不会因为底层数据访问的程序变动而受到影响 因为只需要在业务逻辑层中调用接口就行了

  有可能有人会提 我同样在工厂类里面提供下面的方法去实现调用数据库

  

  

  public static readonly DALFactory dalFa;string webDal = ConfigurationManager AppSettings[ WebDAL ];switch (webDal)case SQLServerDAL :dalFa = new SqlServerDALFactory();break;case OracleDAL :dalFa = new OracleDALFactory();break;default:dalFa = new SqlServerDALFactory();break;

  而这个时候如果我们增加了新的数据库访问方式 就必须得修改此部分的程序

  然后再重新进行编译部署 而同样利用反射的机制去实现的时候 我们举个例子如果系统中现在需要增加MySQL数据库的时候 我们来看看它的代码的可扩展性 我们可以比较PETSHOP中的SQLServerDAL下面的Category cs文件和OracleDAL下面的Category cs文件的代码可知道 因为它们都继承了ICategory接口 所以类实现的方法都相同 这时候我们只需要增加一个MySqlDAL项目 其下面的Category cs文件也同样遵循ICategory接口的方法 这时候我们再去修改为

cha138/Article/program/net/201311/12606

相关参考

知识大全 ASP.NET的ACCESS数据库操作类

ASP.NET的ACCESS数据库操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //网上

知识大全 用C#对ADO.NET数据库完成简单操作

用C#对ADO.NET数据库完成简单操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库访问是

知识大全 asp.net管理mysql数据库的小工具.

   在中可以通过MySQLDatadll来操作mysql数据库写法跟操作SQL数据库类似下面是相关的例子   一打开mysql数据库&nb

知识大全 .Net编写类库直接操作MySql数据库应用实例

.Net编写类库直接操作MySql数据库应用实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET项目开发指南:网络书店数据库操作组件

ASP.NET项目开发指南:网络书店数据库操作组件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 C#ADO.NET操作数据代码汇总

C#ADO.NET操作数据代码汇总  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.用SqlC

知识大全 Asp.Net输出数据到EXCEL表格中

Asp.Net输出数据到EXCEL表格中  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  其实利用

知识大全 迈向Data 2.0——在客户端操作ADO.NET数据服务

迈向Data2.0——在客户端操作ADO.NET数据服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 利用 Java 存储过程简化数据库操作

利用Java存储过程简化数据库操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用Java存

知识大全 用asp.net还原与恢复sqlserver数据库

  上次做了个项目涉及到数据库的还原和恢复到网上找了一下是利用SQLDMO实现的只要添加SQLDMO引用就好了然后利用下边的类的方法就可以实现了  我把原作者的类扩充了一下可以自动识别nfig里的数据