在.net中如何利用数据工厂实现多数据库的操作
2009-09-25 11:00
453 查看
摘要:在项目的开发过程中,在设计模式的概念还没有出来时,我们那时候在编写程序时,往往如果项目的数据库是采用SQL Server,然后用户又想换其它数据库如Oracle时,我们就需要对其代码进行重写,特别是在一些软件的产品化道路中,我们做出来的产品如果让用户可以有选择的去选取各种数据库,那无疑对用户提供了很大的方便。
标签:.net 数据工厂 多数据库 SQL Server Oracle
在项目的开发过程中,在设计模式的概念还没有出来时,我们那时候在编写程序时,往往如果项目的数据库是采用SQL Server,然后用户又想换其它数据库如Oracle时,我们就需要对其代码进行重写,特别是在一些软件的产品化道路中,我们做出来的产品如果让用户可以有选择的去选取各种数据库,那无疑对用户提供了很大的方便。
自从工厂模式的设计理念出来以后,这一切实现就变得容易得多,如果大家对微软的PETSHOP有研究的话,那就不会陌生了,从PETSHOP3.0开始,微软就开始采用了多数据库操作系统的应用。数据工厂主要是通过把数据库的连接做成一个抽象的工厂,如命名DALFactory,程序中所有的数据库连接都通过这个工厂类来产生,用来负责根据配置文件动态创建系统所需的数据访问逻辑对象。
我们就拿PETSHOP来举例说明,PETSHOP在安装的时候,会提示我们选择什么数据库,如根据显示的是SQL Server数据库还是Oracle数据库,可以得到Web.config的节点中的:
<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页面层的程序不会因为底层数据访问的程序变动而受到影响,因为只需要在业务逻辑层中调用接口就行了。
有可能有人会提,我同样在工厂类里面提供下面的方法去实现调用数据库:
而这个时候如果我们增加了新的数据库访问方式,就必须得修改此部分的程序,然后再重新进行编译部署,而同样利用反射的机制去实现的时候,我们举个例子如果系统中现在需要增加MySQL数据库的时候,我们来看看它的代码的可扩展性,我们可以比较PETSHOP中的SQLServerDAL下面的Category.cs文件和OracleDAL下面的Category.cs文件的代码可知道,因为它们都继承了ICategory接口,所以类实现的方法都相同,这时候我们只需要增加一个MySqlDAL项目,其下面的Category.cs文件也同样遵循ICategory接口的方法,这时候我们再去修改为
这个时候都不需要重新对项目进行编译,只需要增加MySqlDAL.DLL文件就可,无论增加多少数据库,都是一件很简单的操作,数据工厂操作多数据的优点就明显可见。
标签:.net 数据工厂 多数据库 SQL Server Oracle
在项目的开发过程中,在设计模式的概念还没有出来时,我们那时候在编写程序时,往往如果项目的数据库是采用SQL Server,然后用户又想换其它数据库如Oracle时,我们就需要对其代码进行重写,特别是在一些软件的产品化道路中,我们做出来的产品如果让用户可以有选择的去选取各种数据库,那无疑对用户提供了很大的方便。
自从工厂模式的设计理念出来以后,这一切实现就变得容易得多,如果大家对微软的PETSHOP有研究的话,那就不会陌生了,从PETSHOP3.0开始,微软就开始采用了多数据库操作系统的应用。数据工厂主要是通过把数据库的连接做成一个抽象的工厂,如命名DALFactory,程序中所有的数据库连接都通过这个工厂类来产生,用来负责根据配置文件动态创建系统所需的数据访问逻辑对象。
我们就拿PETSHOP来举例说明,PETSHOP在安装的时候,会提示我们选择什么数据库,如根据显示的是SQL Server数据库还是Oracle数据库,可以得到Web.config的节点中的:
<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; } |
这个时候都不需要重新对项目进行编译,只需要增加MySqlDAL.DLL文件就可,无论增加多少数据库,都是一件很简单的操作,数据工厂操作多数据的优点就明显可见。
相关文章推荐
- 在.net中如何利用数据工厂实现多数据库的操作
- (转)在.net中如何利用数据工厂实现多数据库的操作
- .net中利用数据工厂实现多数据库的操作
- net中利用数据工厂实现多数据库的操作
- 如何实现每天定时对数据库的操作
- 利用SqlHelper.cs实现Web程序对数据库的增、删、改等操作
- Tom White 是 Kizoom 的首席 Java 开发人员 实现的 如何实现每天定时对数据库的操作
- 如何利用js操作cookie实现记住密码功能
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- 如何优化操作大数据量数据库(几十万以上数据)(三。实现小数据量和海量数据的分页显示存储过程)
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- .net 操作数据库实现
- [转]在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- vb 利用ADO.Net实现数据库的连接,修改,删除,插入操作
- (精)如何利用T_SQL实现数据库备份与还原处理之一--(如何利用sql语句,正确还原数据库)
- 如何通过GridView实现数据库的CRUD操作
- 利用支持ODBC的CRecordset类实现对数据库的操作
- 如何利用.net操作oracle里面的clob字段
- 控制台程序实现利用CRM组织服务和SqlConnection对数据库中数据的增删改查操作
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架