EntityFramework For Mysql 動態切換數據源
阿新 • • 發佈:2017-12-02
方案 簡介 分享 簽名 什麽 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 動態切換數據源