软件架构设计基础知识之数据驱动

在我们面开发或者程序设计时,都接触过如SqlHelper、MySqlHelper、OraceHelper等数据访问层。数据访问层是程序和数据库之间的桥梁,如果想要连接数据库需要打开SqlConnection 等连接对象,一个种数据库就需要单独写一个数据访问层,如果系统再扩展就会使开发人员和系统不堪重负。

为了解决多个数据库访问的问题官方提供了一个DbProviderFactory接口。

本章我们介绍DbProviderFactory数据库提供者工厂。

DbProviderFactory数据库连接工厂

如图所示,

1.DbProviderFactory 是一个抽象类,在 System.Data.Common命名空间。

2.提供了DbConnection、DbCommand、DbDataAdapter、DbConnectionStringBuilder等对象,这些对象是连接数据库的基本对象。

3.MSSQL、MySql、Sqlite、Orace等连接都是继承自DbConnection,增删改查的对象继承自DbCommand。

4. MSSQL、MySql等都会继承这个类。如System.Data.SqlClient.dll MSSQL的数据驱动可以在此模块下得到数据库工厂的实例。

DbProviderFactory是一个高度抽象类,我们做开发时完全可以面向DbProviderFactory完成数据层的设计。

代码示例

以数据库连接工厂创建MSSQL数据访问层为例。MSSQL的数据驱动为System.Data.SqlClient.dll,从驱动中等到数据库工厂实例。

DbProviderFactory有两种获取方式:

1.在App.config配置连接,通过
DbProviderFactories.GetFactory(“System.Data.SqlClient”);

如果是单机项目,或者客户端项目 数据库操作比较固定可以使用第一种方式,这种是配置操作简单

2.通过反射从System.Data.SqlClient.dll驱动中获取,这种方式比较灵活,适合系统中使用多数据库操作

我们以反射方式获取数据库抽象类

图中创建了MSSQL的数据库连接,SQLite、MySql、Orace等依赖于数据库连接工厂接口,我们在做程序设计时面向接口设计,使数据驱动伸缩性更强。

总结

MSSQl、MySql、Orace等都可以面向数据库工厂设计数据层,不再依赖具体SqlConntion、SqliteConn等对象。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月15日
下一篇 2022年5月15日

相关推荐