.net core下使用DbProviderFactories.GetFactory("")無法創建工廠的解決方案


  前言:我們有時候會有一種需求,需要連接很多的數據庫,如:mysql,sqlserver,oracle等等,需要把這些數據庫里的數據抽取出來加工后,返回給客戶端使用。

  在.net framework中是可以使用:

    DbProviderFactories.GetFactory("MySql.Data.MySqlClient");----創建Mysql數據庫工廠

    DbProviderFactories.GetFactory("System.Data.SqlClient"); ------創建Sqlserver數據庫連接工廠

  進行數據庫連接的,當然還需要一些連接字符串的設置。

 

但是在.net core中直接使用這種方式會出現異常,如下圖:是不是很郁悶???

 

而在core項目里的寫法,本人根據網上大神的一些案例,對寫法做了一些變動,代碼:

if (_providerName != null)
{
    if (_providerName == "System.Data.SqlClient")
    {
        _dbType = DBType.SqlServer;
        _factory = SqlClientFactory.Instance;
    }
    else if (_providerName == "MySql.Data.MySqlClient")
    {
        _dbType = DBType.MySql;
        _factory = MySqlClientFactory.Instance;
    }
}             

也就是,我們自己手動根據配置的數據(我這里根據配置的變量providerName-數據庫客戶端程序集名稱)區分,直接將Sqlserver的單例工廠(SqlClientFactory.Instance)和MySql的單例工廠(MySqlClientFactory.Instance)放到基類工廠:DbProviderFactory _factory;

通過這樣改寫就繞過了原來的寫法,解決了本文所說的這個問題。

 

參考大神文章: .Net Core2.0下使用Dapper遇到的問題   ,以后有時間對Dapper學習下,對多個數據庫的統一鏈接的類庫,好用!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM