標籤:des blog http io ar 使用 sp for on
在vs2013中使用mysql串連entityFramework經常會遇到這個問題:您的項目引用了最新Entity Framework;但是,找不到資料連線所需的與版本相容的Entity Framework資料提供者。請退出此嚮導,安裝相容提供者,重建您的項目,然後再執行操作。
在vs中 使用mysql的問題多的會讓人蛋疼。在這裡給個妥妥的一條龍解說哈。
<無耐心看過程講解的可直接看最下面>
在建立實體模型的時候 資料來源選項很可能沒有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>
<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" />
這裡是安裝6.8.3 版本後 修改的machine.config
安裝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.3
以上這兩個安裝完之後,恭喜你, 進入下一個錯誤, vs裡 就會提示上述圖片的錯誤。
這個錯誤的解決方案 網上的答案可以說是 眾多紛紜 奇葩朵朵開啊。 其實解決方案很簡單,人家都說了,找不到資料連線所需的與版本相容的Entity Framework資料提供者。
這裡需要先安裝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>
完畢.
哈哈 !!不要問 愛過!
您的項目引用了最新Entity Framework;但是,找不到資料連結所需的與版本相容的Entity Framework資料庫 EF6使用Mysql的技巧