最近在使用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下连接非微软的数据库是有些麻烦,不过熟悉之后觉得也可以理解。