1. 程式人生 > >EF+MVC對映MySQL資料庫搭建程式框架總結

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,就配置好了。