二十四画生的Blog


        ——开始学习Orchard框架
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用反射工厂模式支持多数据库访问

Posted on 2005-09-01 14:36  二十四画生  阅读(9783)  评论(11编辑  收藏  举报

  让应用软件支持多种数据库操作,是应用开发软件中的一个需求。在.NET中我们可以使用System.Data.Odbc命名空间中所提供的类实现对所有数据库的操作。但是在.NET对各种不同的数据库还提供了特有的数据提供程序。如:访问SQL Server数据库可以使用System.Data.SqlClient命名空间下的类;访问Oracle数据库可以使用System.Data.OracleClient命名空间下的类。利用这些特有的数据库提供程序可以获得更高的性能。所以在开发软件的过程中,我们需要设计一种模式用来支持利用特定的数据库提供程序访问特定的数据库,而不是统一使用ODBC连接。

  工厂模式是支持多种数据库操作的一个常用方法。“工厂模式”在博客园中有多篇文章介绍,在这里我就不多讲了。在DotNetNuke(以下简称DNN)中就是利用.NET中反射的原理简化了工厂类的代码,并且实现了动态创建对象实例的功能,避免了新增数据库种类需要重新编译主程序的问题。在DNN中通过web.config配置文件的自定义配置节点,配置具体数据库访问的Provider,并设置应用程序默认数据库访问Provider。通过修改配置文件,就能够达到添加和修改应用程序所访问的具体数据库。在DNN中,各种具体数据库访问Provider,都继承一个名为DataProvider的数据访问工厂类。该类动态的构造配置文件中所设置的默认的具体数据访问Provider。
静态结构图如下:


  我认为DNN中的数据库访问模式是值得我们学习的,所以我将DNN中的这一部分单独提取出来并用C#重新编写,好用于其它项目。这的确是个好方法,把它贴出来大家分享一下,有什么问题大家请一定要指出。当然还有更好的方法,大家也可以写出来分享一下。

下载Demo>>

相关内容:
Dot NET设计模式—反射工厂:http://fineboy.cnblogs.com/archive/2005/08/03/206244.html
这篇文章详细的讲解了反射工厂的原理。

DNN 数据访问策略【译】:http://michaelj.cnblogs.com/archive/2005/08/11/212532.html