知识大全 .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数据库操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! //网上
用C#对ADO.NET数据库完成简单操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库访问是
在中可以通过MySQLDatadll来操作mysql数据库写法跟操作SQL数据库类似下面是相关的例子 一打开mysql数据库&nb
.Net编写类库直接操作MySql数据库应用实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 ASP.NET项目开发指南:网络书店数据库操作组件
ASP.NET项目开发指南:网络书店数据库操作组件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
C#ADO.NET操作数据代码汇总 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一.用SqlC
Asp.Net输出数据到EXCEL表格中 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 其实利用
知识大全 迈向Data 2.0——在客户端操作ADO.NET数据服务
迈向Data2.0——在客户端操作ADO.NET数据服务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
利用Java存储过程简化数据库操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 利用Java存
知识大全 用asp.net还原与恢复sqlserver数据库
上次做了个项目涉及到数据库的还原和恢复到网上找了一下是利用SQLDMO实现的只要添加SQLDMO引用就好了然后利用下边的类的方法就可以实现了 我把原作者的类扩充了一下可以自动识别nfig里的数据