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>
***問題解決了,不會出現版本不相容提示了
參考文章: