EntityFramework For Mysql 動態切換數據源


1.簡介

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

2.EntityFramework For Mysql

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

(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。如果是數據庫連接字符串則直接拿來用。

5.遇到的坑

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


免責聲明!

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



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