1. 程式人生 > >EntityFramework For Mysql 動態切換數據源

EntityFramework For Mysql 動態切換數據源

方案 簡介 分享 簽名 什麽 article uget 類的構造函數 問題

1.簡介

在工作中遇到一個問題。項目有三個數據庫(三個數據庫表結構一樣),用戶可以選擇使用哪個數據庫。其實就是動態切換數據庫連接。

2.EntityFramework For Mysql

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

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

技術分享圖片

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

技術分享圖片
技術分享圖片
技術分享圖片

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

技術分享圖片
技術分享圖片
這樣就可以來使用Entityframework來訪問mysql數據了。

(4).簡單測試

技術分享圖片
技術分享圖片
技術分享圖片

3.動態切換數據庫

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

技術分享圖片

(2).對context進行改造

技術分享圖片

(3).改造測試

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

4.為什麽可以直接傳鏈接字符串

從DbContext構造函數的方法簽名可以看出端倪。
技術分享圖片
可以看出我們傳數據庫連接字符串名字和直接傳數據庫連接字符串都是可以的。EntityFramework會去做判斷,如果是name,再去配置文件取數據庫連接字符串和providerName。如果是數據庫連接字符串則直接拿來用。

5.遇到的坑

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

遇到坑的童鞋們可以去看下。

EntityFramework For Mysql 動態切換數據源