2018年12月31日 星期一

[EF/MySQL] 如何使用EF Database First連接MySQL DB

前言:
Entity Framework是.Net ORM(Object Relational Mapping)的Solution,常搭配SQL Server,但若要連結MySQL,該怎麼設定呢?


作法:
1. 先至MySQL官網下載MySQL for Visual Studio並安裝,使用最新的8.0.13版:


2. 打開VS,選單列->檢視->伺服器總管,在資料來源上右鍵->加入連接,
點選變更,即可選擇MySQL Database:

3. 輸入連接MySQL的連線資訊後,可點選測試連接確認結果。 


4. 但想使用EF Database First來介接MySQL,卻還是找不到MySQL provider:

5. 因為MySQL for Visual Studio適用在VS的伺服器總管上。
需再安裝MySQL Connector/NET(用來連接MySQL的ADO.NET driver),一樣使用8.0.13版:


6. 重開專案後,新增實體資料模型,就可以看到MySQL provider:

7. 設定好連線資訊後,再點選下一步,卻出現錯誤:

8. 因為還要設定EF連接MySQL的provider,建議從NuGet下載MySql.Data.EntityFramework,專案在加入參考MySql.Data、MySql.Data.EntityFramework與Google.Protobuf後,會自動更新web.config的EF provider。
或是手動加入這些dll(可在MySQL Connector Net安裝資料夾的Assemblies下找到), 在web.config的EF區塊內自行加上
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework" />


9. 最後完成Database first設定。


後記:
在第7點設定資料連接的畫面,按下一步若視窗跳掉,
通常是web.config的EF provider沒設好,
或是沒安裝MySQL Connector/NET。


參考資料:
https://dev.mysql.com/doc/mysql-windows-excerpt/8.0/en/windows-install-archive.html