您的項目引用了最新實體框架;可是,找不到數據連接所需的與版本兼容的實體框架數據庫 EF6使用Mysql的技巧

  

 

  在vs2013中使用mysql鏈接entityFramework常常會遇到這個問題:您的項目引用了最新實體框架;可是,找不到數據鏈接所需的與版本兼容的實體框架數據提供程序。請退出此嚮導,安裝兼容提供程序,從新生成您的項目,而後再執行操做。mysql

 在vs中 使用mysql的問題多的會讓人蛋疼。在這裏給個妥妥的一條龍解說哈。sql

 

<無耐心看過程講解的可直接看最下面>數據庫

 

    在建立實體模型的時候  數據源選項極可能沒有MySql database,這問題很容易解決,只須要安裝 mysql-for-visualstudio 便可解決,這裏推薦版本是 mysql-for-visualstudio-1.2.3 。 還須要安裝一個 MySQL Connector/Net , 咱們來看一看來自官網的介紹:MySQL 官方的 .NET 驅動程序,MySQL 官方的 .NET 客戶端開發包。mysql 數據庫最新版dotnet數據庫鏈接驅動。 因此 顯而易見,這個程序必須裝上,這裏推薦版本是 mysql-connector-net-6.8.3 。 PS: 這裏提醒下,這個版本不是越高的越合適,得配合你Mysql.data 的版本,目前大部分是使用mysql.data version 6.8.3 這版本。 若是安裝高於 mysql-connector-net - 6.8.3 版本 , 安裝後會修改VS下的machine.config :框架

<dependentAssembly>ide

<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="6.7.4.0" newVersion="6.8.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data.Entity" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="6.7.4.0" newVersion="6.8.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Web" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="6.7.4.0" newVersion="6.8.3.0" />
</dependentAssembly>
工具

<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.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
3d

 

這裏是安裝6.8.3 版本後 修改的machine.config blog

安裝6.9.4版本,會時 newversion = "6.9.4"  會致使不少後期問題:例如 引用問題 : could not load file or assembly 'Mysql.Data, Versio=6.8.3'   錯誤號 : 0x80131040 這樣的程序集不匹配問題,在不少論壇上都看到過這個問題,形成的辦法也大可能是由於machine.config 被修改,強制指向高版本,致使的程序集不匹配。 圖片

固然這裏若是經過手動修改machine.config 解決這個問題,能夠一時解決,可是會引發後期不少沒必要要的問題, 因此建議直接安裝 mysql-connector-net - 6.8.3ip

 

以上這兩個安裝完以後,恭喜你, 進入下一個錯誤, vs裏 就會提示上述圖片的錯誤。

這個錯誤的解決方案 網上的答案能夠說是 衆多紛紜 奇葩朵朵開啊。 其實解決方案很簡單,人家都說了,找不到數據鏈接所需的與版本兼容的實體框架數據提供程序。

這裏須要先安裝nuget 管理器 

 

在 - 工具 - 庫程序包管理器 - 程序包管理器控制檯 這裏 默認項目, 在PM>後 輸入 


Install-Package EntityFramework -Version 6.0.0
Install-Package EntityFramework.zh-Hans -Version 6.0.0
Install-Package MySql.Data.Entity.EF6

每一句輸完 回車執行

容許從新加載config. 

 

這時候在providers 裏 添加一個mysql.data.MysqlClint節點, 這個步驟很重要。

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>

效果以下

<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"></provider>

</providers>

 

到了這一步 ,從新生成一下方案  妥了! 

哈哈 不是微軟的親兒子就是事多!

 

這裏是個小總結。給急性子的朋友看:

需安裝:

mysql-for-visualstudio-1.2.3 

mysql-connector-net - 6.8.3

nuget 包管理器

 

nuget 控制檯輸入

Install-Package EntityFramework -Version 6.0.0
Install-Package EntityFramework.zh-Hans -Version 6.0.0
Install-Package MySql.Data.Entity.EF6

 

在.config 的providers 加一個節點

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>

 

完畢.

 哈哈 !!不要問 愛過!

相關文章
相關標籤/搜索