EF+MVC對映MySQL資料庫搭建程式框架總結
以前使用VS都是通過SQLServer資料庫對映,不過這個專案需求是MVC+EF+MySQL,在配置過程中出現了很多錯誤上網查看了很多資料,現在讓我來總結一下吧。
一:配置
因為VS和SqlServer都是微軟的親兒子所以在用VS對映SQLserver的時候很方便,但是對映MySQL的時候就沒有那麼方便了,需要做很多的配置
(1)安裝mysql-connector-net和mysql-for-visualstudio
因為用EF對映的時候並沒有MySQL的對映源所以需要安裝mysql-connector-net和mysql-for-visualstudio,需要注意的是這兩個軟體的版本要一致,否則就會出錯。
(2)配置MySQL.Data和MySQL.Data.Entity
在安裝過以上兩個軟體之後雖然有了對映MySQL的資料來源,但是當對映的時候並沒有任何反應或者出現閃退的情況,這是因為在相應的決絕方案中沒有配置MySQL.Data和MySQL.Data.Entity;配置MySQL.Data和MySQL.Data.Entity方法有多種,一個是在網上下載dll檔案,另一種就是在VS自帶的NuGet上安裝,我就是在NuGet上安裝的。安裝的時候如果先安裝MySQL.Data.Entity相應的MySQL.Data和EntityFromWorkNuGet就會給你自動配置上了。
(3)配置Config檔案
當時做專案時在配置Config檔案的時候我也出了很多錯誤,剛開始我只在Config檔案中配置了連線資料庫的字串
所以在執行的時候一直出現System.Data.Entity.Core.MetadataException
HResult=0x80131939
Message=指定的架構無效。錯誤:
Model1.ssdl(2,2) : 錯誤 0152: 未找到具有固定名稱“MySql.Data.MySqlClient”的 ADO.NET 提供程式的實體框架提供程式。請確保在應用程式配置檔案的“entityFramework”節中註冊了該提供程式。
剛開始的時候我還以為是自己沒有引用什麼dll檔案,但是到了最後感覺把所有的dll都配置了但是還是沒有解決問題,因此去找了度娘和CSDN找到了解決方案,因為是對映的MySQL資料庫所以需要在Config檔案中配置MySQL的相關配置
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
這樣整個EF+MVC+MySQL,就配置好了。