前面说了数据提供程序建立在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的漂亮功能。
并且这种模型需要一直保持对数据库的连

本文介绍了如何使用VS2017自带的LocalDB数据库,探讨了ADO.NET的抽象基类、数据提供工厂模型以及断开式连接模型。在实践中,作者遇到并解决了关于连接字符串错误、关键字冲突的问题,并分享了尝试使用EF框架建立EDMX文件的经验,指出EF6可能存在的变化与不足。
&spm=1001.2101.3001.5002&articleId=100594331&d=1&t=3&u=0f2505ff1cf84c7688701999cec0b29d)
1594

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



