EntityFramework For Mysql 動態切換數據源

1.簡介

在工做中遇到一個問題。項目有三個數據庫(三個數據庫表結構同樣),用戶能夠選擇使用哪一個數據庫。其實就是動態切換數據庫鏈接。mysql

2.EntityFramework For Mysql

先來簡單的介紹下mysql使用EntityFramework來操做數據庫。
直接上代碼:sql

(1).先建個項目,安裝mysql,entityframework相關包

nuget安裝

(2).創建實體和對應的數據庫表

人員實體
文章實體
建表語句

(3).編寫數據庫鏈接字符串,編寫context實體

數據庫鏈接字符串
context實體類
這樣就能夠來使用Entityframework來訪問mysql數據了。數據庫

(4).簡單測試

測試代碼
person測試結果
article測試結果

3.動態切換數據庫

(1).在建一個blog1數據庫,表如blog數據庫。

兩個數據庫

(2).對context進行改造

context改造後

(3).改造測試

測試blog1

blog1表

blog

blog表

4.爲何能夠直接傳連接字符串

從DbContext構造函數的方法簽名能夠看出端倪。
DbContext構造函數
能夠看出咱們傳數據庫鏈接字符串名字和直接傳數據庫鏈接字符串都是能夠的。EntityFramework會去作判斷,若是是name,再去配置文件取數據庫鏈接字符串和providerName。若是是數據庫鏈接字符串則直接拿來用。ide

5.遇到的坑

其實EntityFramework對mysql的支持並非很好,還有些bug。我在進行以上實驗的時候遇到了一個問題。當我直接將數據庫鏈接字符串的傳到父類的構造函數時,報了: Keyword not supported:'port'錯誤。通過一番查找,最終找到三個方案:https://stackoverflow.com/questions/45217166/c-sharp-entity-framework-keyword-not-supported-port
遇到坑的童鞋們能夠去看下。函數

相關文章
相關標籤/搜索