ADO.NET DbProviderFactories 集成开发环境包括许多新的和改进的用于提高工作效率的功能。IDE 还进行了重新设计,从而向开发人员提供对.NET Framework 组件的直接访问。

ADO.NET DbProviderFactories发展还是很快的,就使用ADO.NET DbProviderFactories并扩充兼容mysql我深入的研究了一下,在这里给大家分享一下,我们现在一起来看看吧。ADO.NET2.0 。

ADO.NET DbProviderFactories发展与兼容说明  DbProviderFa 第1张

ADO.NET通用接口的限制:接口不易扩展,ADO.NET1.1无法创建某些类的实例,ADO.NET1.1无法判断可用的.NET数据提供程序。提供工厂模型如何解决上述限制,通过抽象积累来扩展ADO,NET模型,#t#

使用ADO.NET DbProviderFactories类来创建对象。提供程序工厂模型的限制,许多查询结构都是数据库特有的。为参数化查询设置CommandText时,可能需要提供程序特有的代码,指定参数数据类型可能需要提供程序特有的代码。

为了使开发的代码通用,不局限于特定的数据库,本次开发中决定使用DbProviderFactory+标准SQL,以开发一个适用于mysql和 sqlserver的封装,但DbProviderFactories 并没有提供对mysql的DbProviderFactory的支持,所以需要扩充ADO.NET DbProviderFactories类兼容mysql,而且在ADO.net 2.0中mysql和sqlserver的ParameterMarkerFormat都有bug,所以扩展类要解决这个bug。

  1. publicstaticclassDbProviderFactoriesEx{publicstaticDbProviderFactoryGetFactory(stringproviderName)
  2. {if(providerName==null)thrownewArgumentNullException("providerName");DbProviderFactorydbFactory;
  3. switch(providerName){case"MySql.Data.MySqlClient":returnnewMySqlClientFactory();default:
  4. returnDbProviderFactories.GetFactory(providerName);}}publicstaticstringGetParameterMarkerFormat(DbConnectionconnect)
  5. {if(connect==null)thrownewArgumentNullException("connect");Typetype=connect.GetType();
  6. if(type==typeof(MySql.Data.MySqlClient.MySqlConnection))return"?{0}";//mysqlbug
    if(
    type==typeof(System.Data.SqlClient.SqlConnection))return"@{0}";//msbugconnect.Open();
  7. stringresult=connect.GetSchema("DataSourceInformation").Rows[0]["ParameterMarkerFormat"].ToString();connect.Close();returnresult;}}
转载请说明出处
知优网 » ADO.NET DbProviderFactories发展与兼容说明

发表评论

您需要后才能发表评论