最近在使用MySQL數據庫,在使用EF框架連接MySQL數據庫時發現了一個問題,使用DB First創建實體對象的時候會出現如下圖的錯誤:您的項目引用了最新版實體框架….. (如下圖)或者會出現新建實體對象模型時閃退。
出現此問題的原因應該是由於 mysql-for-visualstudio 和 mysql-connector-net 和EF框架兼容問題。
解決此問題的辦法:
從MySQL官網下載最新版本的mysql-for-visualstudio 和 mysql-connector-net;
我這里使用的是 mysql-connector-net-6.9.9 和mysql-for-visualstudio-1.2.6;
對應下載地址:
mysql-for-visualstudio-1.2.6 地址:
http://cdn.mysql.com//Downloads/MySQL-for-VisualStudio/mysql-for-visualstudio-1.2.6.msi
mysql-connector-net-6.9.9下載地址:
http://cdn.mysql.com//Downloads/Connector-Net/mysql-connector-net-6.9.9.msi
安裝完成之后使用NuGet包管理器引入Mysql.Data 和 MySql.Data.Entity 對應版本都是6.6.9的。
使用NuGet引入包之后Web.config 會自動更新 (下面是我的web.config)
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v12.0" /> </parameters> </defaultConnectionFactory> <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.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> </providers> </entityFramework> <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.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>
接下來新建ADO.NET實體數據模型
選擇數據庫優先
配置連接信息
選擇MySql Database 配置對應的服務器地址、用戶名、密碼;
選擇對應的數據庫,進行測試連接之后確定即出現熟悉的界面(選擇數據庫對象)。
在vs2013下使用EF6連接MySQL配置成功完成。
在vs下連接非微軟的數據庫是有些麻煩,不過熟悉之后覺得也可以理解。