前言:我們有時候會有一種需求,需要連接很多的數據庫,如: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學習下,對多個數據庫的統一鏈接的類庫,好用!!!
