1. 程式人生 > >VS2015+MySql+EF6閃退等填坑總結

VS2015+MySql+EF6閃退等填坑總結

背景:VS2015+MySql+EF6(DB First)

踩坑順序:之前的操作依次如下:

  1,安裝 MySQL Connector/NET(不用想,裝最新的,8.0.12)

  2.安裝 MySQL for Visual Studio (不用想,裝最新的,最新1.2.8)

  3.在VS2015建立WEB專案

  4.nuget 安裝MySql.Data.Entity (最新6.10.8,會自動安裝依賴包MySql.Data 6.10.8 和 EF 6.2.0)

一個坑:接下來,建立【ADO.NET實體資料模型】:

建立實體資料模型-閃退

坑來了,點【下一步】,閃退,暈!

問題解決:查了好多說法,花了無數時間,發現最重要的是要保持驅動版本一致問題,總結各部件正確的版本是:

  3.專案nuget 安裝MySql.Data.Entity (最新6.10.8,會自動安裝依賴包MySql.Data 6.10.8 和 EF 6.2.0)

  ***問題解決了,不會閃退了

要點:

  1、MySQL Connector/NET 、MySql.Data、MySql.Data.Entity 這三個部件版本要一致(截止2018-10-18各部件最新統一版本是6.10.8)

  2、不要給MySql.Data升級(不要見到新版本就激動...最新是8.0.12)

注意事項:

  1、MySql.Data 6.10.8支援的.net framwork版本是4.5.2。所以編譯選項要選擇為4.5.2,否則可能會有警告資訊。

第二個坑:您的專案引用了最新實體框架;但是,找不到資料鏈接所需的與版本相容的實體框架資料庫 提供程式。

資料庫提供程式

問題解決:在保證上面的前提下,檢查webconfig配置檔案。我因為在解決問題的過程中,嘗試了不通的Mysql.Data版本,導致webconfig檔案中的版本與實際使用的6.10.8不一致。

  1,runtime配置節


  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.10.8.0" newVersion="6.10.8.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

  2.entityFramework配置節


  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />      
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </providers>
  </entityFramework>

 3.system.data配置節

  <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>

  ***問題解決了,不會出現版本不相容提示了

參考文章: