前面说了数据提供程序建立在6个抽象基类之上,特定的数据库继承了这些基类。
所以利用抽象基类以及对应的抽象接口,我们就能够构建灵活的代码库。
如果现在做一个针对sel server的应用程序,下一次转向其他数据库平台。就不像特定数据库的数据提供程序那样硬编码,无需重新修改,编译程序。
在抽象基类以及接口上,ADO.NET还提供了一个叫DbProviderFactorys的类,这个类也叫做数据提供工厂模型。
工厂模型就是对抽象基类和接口的再包装,通过静态方法.GetFactory,并指定包含数据提供程序的.NET命名空间名称,就能获取相关的对象(比如连接,命令,数据读取器等)。
//工厂模型
DbProviderFactory df = DbDbProviderFactorys.GetFactory("System.Data.SqlClient");
using(DbConnection cn = df.CreateConnection())
{
cn.ConnectionString= "连接字符串";
cn.Open();
DbCommand cmd=df.CreateCommand();
cmd.Conection=cn;
cmd.CommandText="Select*From 表格名";
using(DbDataReader dr=cmd.ExecuteReader())
{
while(dr.Read())
}
}


但是数据工厂模型也有缺点,代码只能通过抽象类的成员来使用所有提供程序通用的方法。
使得我们不能直接访问特定DBMS的漂亮功能。
并且这种模型需要一直保持对数据库的连
2850



被折叠的 条评论
为什么被折叠?



