Vs2013 使用EF6 连接mysql数据库

时间:2022-07-14 06:28:19

最近在使用MySQL数据库,在使用EF框架连接MySQL数据库时发现了一个问题,使用DB First创建实体对象的时候会出现如下图的错误:您的项目引用了最新版实体框架….. (如下图)或者会出现新建实体对象模型时闪退。

Vs2013 使用EF6 连接mysql数据库

出现此问题的原因应该是由于 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;

Vs2013 使用EF6 连接mysql数据库

对应下载地址:

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实体数据模型

Vs2013 使用EF6 连接mysql数据库

选择数据库优先

Vs2013 使用EF6 连接mysql数据库

配置连接信息

Vs2013 使用EF6 连接mysql数据库

选择MySql Database 配置对应的服务器地址、用户名、密码;

选择对应的数据库,进行测试连接之后确定即出现熟悉的界面(选择数据库对象)。

Vs2013 使用EF6 连接mysql数据库

Vs2013 使用EF6 连接mysql数据库

在vs2013下使用EF6连接MySQL配置成功完成。

在vs下连接非微软的数据库是有些麻烦,不过熟悉之后觉得也可以理解。