ORM(Object-Relational Mapping)是將關聯式資料表映射到物件導向資料的抽象化技術
其中最有名的是微軟的Entity Framework
它最大的優勢是只要寫一套LINQ,就能適用各種不同的DB,不需要為了不同DB改寫
且支援DB眾多,舉凡SQL Server、MySQL、Oracle,到PostgreSQL、SQLite等皆可
(當然支援最好的還是微軟自己的SQL Server)
之所以能支援這麼多種類的DB,其實也是靠各家廠商提供的Provider,將LINQ語法轉換而成

之前我心血來潮,想嘗試把DB轉成MySQL,看是否真能如微軟宣稱能無痛轉換過去
不過光是第一步建立edmx就遇到阻礙,不是閃退就是出現版本不支援的錯誤
照著網路許多大神的作法,修改web.config,手動將dll引入專案都無效
嘗試許多作法才終於發現問題,MySQL官網的說明已經過時了
為了讓有緣人少走冤枉路,特此紀錄一下,希望幫到遇到同樣問題的人

1. 下載MySQL Installer
選擇安裝MySQL for Visual Studio跟Connector/NET
新的版本為8.0.17

2019-07-31 13_35_55-MySQL Installer.png

2. MySQL for Visual Studio目前不支援Visual Studio 2019
所以請使用Visual Studio 2017,否則百分之百看不到資料來源

3. NuGet請安裝MySql.Data.EntityFramework套件(會同時安裝關聯套件),8.0.17版必須下載這個
千萬不要跟官網說的一樣跑去下載MySql.Data.Entity
只要版本號不同,連接DB時肯定會閃退
另外Web.config會自動增加對應內容,不須手動修改

2019-08-11 22_16_03-Window.png

2019-07-31 13_39_36-預覽變更.png

4. 進行一次編譯,否則後面可能會出現目前EF版本不支援的錯誤文字

5. 照一般流程,新增ADO.NET實體資料模型

2019-08-11 22_11_29-新增項目 - MySQLTest.png

在資料來源處應該會出現"MySQL Database",之後輸入帳號密碼即可
如果出現無法選擇EF6的訊息,請重建一次方案即可

2019-08-11 22_12_58-實體資料模型精靈.png

2019-08-11 22_12_33-變更資料來源.png

 

2019-07-31 13_43_18-實體資料模型精靈.png

 

 

順便一提,想把SQL Server的DB轉到MySQL,可以使用MySQL Workbench
[Database]-[Migration Wizard],接著照著步驟往下走即可

2019-08-11 22_25_20-Window.png

arrow
arrow
    全站熱搜

    蕭雲 發表在 痞客邦 留言(2) 人氣()