前言
一直以来习惯在 ASP.NET 项目中使用 Entity Framework,长期来开发的项目一般都用了微软自家的 SQL Server 数据库,在 Visual Studio 中直接使用 SQL Server 是很简单的。但是一些项目的需要会使用 Oracle 或者 MySQL,这里记录下项目使用 Entity Framework 并使用 MySQL 的配置过程。
网上搜相关关键字会出现一大堆教程,但是也五花八门,一开始得到方法是,只需要使用 NuGet 安装 MySql.Data.Entity
和 MySql.Data
包即可,使用 NuGet 的好处是自动会在 Web.config
文件中创建相关配置节。这里参考的 [Entity Framework] MySQL @ Entity Framework 6 进行了手动添加。不过我的过程和这个有些出入。
安装过程
安装依赖包
按照上面说的方式,直接使用 NuGet 安装 MySql.Data.Entity
和 MySql.Data
包, Web.config
文件中也自动添加了如下配置节:
<providers>
...
<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>
<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>
报错
我的项目中会使用 DB First 向导方式创建数据库实体,一路下一步后会提示不兼容实体框架:
在上面的参考文章中,在 Web.config
文件中创建相关配置节后问题解决了。但我的项目是自动生成的,而且并没有问题。
官网解决方案
在 MySQL 官网看到了一个 MySQL for Visual Studio 工具,读了下安装说明,照着安装后问题解决了。
官网上的 MySQL for Visual Studio / Installing and Configuring 说了两个比较关键的提示:
Note
Many MySQL for Visual Studio features require MySQL Connector/Net installed on the same system, and MySQL Connector/Net is a separate download. Install both using MySQL Installer.
需要同时安装 MySQL for Visual Studio 和 MySQL Connector/Net。
Important
Always install MySQL for Visual Studio before installing MySQL Connector/Net.
MySQL Connector/Net 必须要在 MySQL for Visual Studio 安装之后才能安装。
按照官网的方法下载两个安装包安装后,以上问题顺利解决。
其他
创建数据库连接可以注意如下选择:
连接可以使用服务器资源管理器创建。
也可以在 connectionStrings
配置节中增加,形式如下:
<connectionStrings>
<add name="MySqlConnection" connectionString="server=localhost;user id=root;password=root;database=dbname" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
总结
按照官方推荐的方案,ASP.NET 项目使用 MySQL 数据库的配置如下,注意按照顺序进行,同时,这里假设使用的是 Entity Framework ORM 方案,如果不用 Entity Framework,猜测只需要安装 MySql.Data
(未验证)。
- 安装 MySQL for Visual Studio
- 安装 MySQL Connector/Net
- 使用 NuGet 安装
MySql.Data.Entity
和MySql.Data
包