vs2015連接mysql數據庫常見問題
最近在vs2015用asp.net開發一個網站,要連接mysql數據庫,於是百度了一下相關配置的文章,有好幾篇文章說了相關步驟,但是我裝的時候還是遇到了問題,在這里總結一下配置的過程中可能會出現的問題以及本人摸索出來的一些處理方法。
在此之前提供一下,我在配置過程中看到的別人對於vs2015連接mysql數據庫相關步驟的好文連接:
https://www.cnblogs.com/RushPasser/p/5438334.html
http://www.ituring.com.cn/article/211529?utm_source=tuicool&utm_medium=referral
http://blog.csdn.net/mynewdays/article/details/75194267
下面開始正文:
按照前面相關配置我們基本可以知道整個配置過程中要安裝的東西了,分別有:MySQL for Visual Studio、MySQL Connector Net、MySQL.data、MySQL.data.entity、EntityFrameword。前面兩個屬於MySQL數據庫的插件,它們的作用本人是這樣理解的:MySQL for Visual Studio可以讓vs識別到MySQL; MySQL Connector Net 使vs中的.net平台能夠與MySQL數據庫建立連接。這兩個插件的安裝沒啥問題,直接默認安裝就行。接下來是用NuGet安裝Mysql.data、Mysql.data.entity、EntityFramework。這三個東西的安裝就要注意了,不然會讓你在創建實體類的時候各種報錯,甚至不能完全將它們都安裝上。正確的安裝順序是:直接安裝MySql.data.entity就行,其他的不用再單獨安裝。為啥呢?因為它要依賴其他兩個才行,所以系統會自動幫你把mysql.data和EntityFramework都安裝上。作為一個新手,我肯定是很理所當然地按順序安裝了。那么各種坑爹就免不了了。
下面是各種錯誤以及解決方法:
一、安裝程序包相關的錯誤
如果先安裝Mysql.data會出現如下問題:
1、無法再安裝Mysql.data.entity和EntityFramework。Mysql.data順利安裝完成,興高采烈地進行下一步,安裝Mysql.data.entity。結果系統提示如下錯誤:

可以看到這個錯誤是由安裝MySql.Data引起的,因為安裝Mysql.data.entity的時候它會幫你安裝它的依賴項,它的依賴項如下圖紅色方框所示:

由於我已經安裝了MySQL.data,所以再次安裝會沖突。好了,既然問題很明白了,那么我們卸了MySQL.data,再重新安裝MySQL.data.entity就可以了唄。想法很合理,但是你卸載時,你就知錯。錯誤如2、所示;
2、無法卸載Mysql.data。報錯如下圖所示:

傻眼了,還不能卸載了。現在是裝不上,又卸不了。一番折騰后,得到解決方法如下:這里雖然提示錯誤無法卸載,但是我們是程序員呀,沒啥是直接精准強刪決解不了的卸載。在此之前我們首先要知道mysql.data、mysql.data.entity、EntityFramework的本質是啥,他們都是開發工具包,里面都是一些庫類或者一些api啥的,所謂的安裝只不過是將他們導入我們的工程環境中,供我們后續開發調用而已。那么我們就可以把它們從我們的項目中移除了。要刪除的文件有如下紅框畫出來的三個:

把上面這三個文件干掉再重新打開一次NuGet發現已安裝的程序包里面沒有Mysql.data了,好了,接下來就可以按照前面所說直接安裝MySql.data.entity了。emm~其實還有另外一個辦法可以讓你在安裝了MySQL.data之后也能正確安裝MySql.data.entity,還記得它為什么安裝不了嗎?是因為已經安裝了MySQL.data,而MySql.data.entity還想要安裝它,那么我們可以讓MySql.data.entity不安裝MySql.data不就可以了嗎。做法是如下:

將MySql.data.entity的依賴項行為選為如圖所示。這樣他就不會連同他的依賴項一起安裝了。嘻嘻嘻,是不是有點恍然大悟的感覺,現在你知道所謂的依賴項是啥意思了吧。而為什么安裝MySql.data.entity的時候后會幫你安裝其他兩項依賴項了吧,就是因為這個安裝選項的問題。理解了這一點,你就能更加明白這個安裝的過程。
二、MySQL創建實體類閃退以及EF不兼容問題的決解思路
(1)MySQL創建實體類閃退的決解方法
有的時候就算mysql.data.entity和MySQL Connector Net版本保持一致了,在創建實體類的時候還是會出現閃退的問題,關於這個問題也是讓人蛋疼呀,我被這個問題折騰的不輕。出現這個問題的原因可能是mysql.data.entity和MySQL Connector Net的版本與mysql數據庫版本不匹配,決解方法是換一個更高或者更低一點版本的mysql.data.entity和MySQL Connector Net試試,再不行就多試幾個,總有一個本版是不會閃退的。例如,我的mysql是5.6版本的,mysql.data.entity和MySQL Connector Net都是6.8.8,就不會閃退。總之,如果出現了閃退,而mysql.data.entity和MySQL Connector Net的版本已經一致了,那么就可以試試換一個高一點或者低一點的版本試試。
(2)MySQL創建實體類遇到EF不兼容問題的決解思路
決解了閃退問題,你還有可能在創建實體類的時候遇到一個問題,那就是實體框架不兼容問題,具體的報錯如下:

這里提示EntityFramework(實體框架)與建立數據庫連接所需用到的版本不兼容,其實就是和MySQL.data.entity的版本不兼容。例如,雖然我已經安裝了EntityFramework6.2.0但是這里顯示6.X的本版不可用。解決方法是,打開NuGet卸載掉EntityFramework,卸載的時候要把下圖的復選框勾上,不然卸載不了。

然后再創建實體,這樣由於沒有安裝EntityFramework,所以再到這一步的時候,系統會自動幫你找到相適應的版本,幫你裝上,你會看到如下提示:

可以看到系統將為你安裝5.x的版本,直接下一步就行。這樣實體類的創建就沒有啥問題了,功德圓滿,雙手合十!
到此,你應該能成功創建實體類了。第一次寫博客,也着實是因為被這個問題折騰不輕,希望能幫助遇到同樣問題的人,就總結了一下。大家一起學習學習嘛。可能有的地方理解不正確,畢竟是我個人摸索出來的,實際上可能並非如此理解的。大家選擇性吸收,喜歡就給個贊。轉載不用通知我,但請注明出處!