使用 MySQL
起因
因为我自用的服务器只是腾讯云 1 核 1G 的学生机,不方便装 SQL Server,所以转而 MySQL。
这里使用的 MySQL 版本号为 8.0。
解决方案
- 删除 Qincai.EntityFrameCore 项目中现有的针对 SQL Server 的迁移文件,即 Migrations 文件夹。
-
为 Qincai.EntityFrameCore 项目,添加 Pomelo.EntityFrameworkCore.MySqlNuGet 引用,并删除对 Microsoft.EntityFrameworkCore.SqlServer 的引用。
Orcale 官方也有提供 MySql.Data.EntityFrameworkCore ,但在之前我使用的时候(18 年 10 月)还存在一些 Bug,不知道现在有没有修复。如果有知道的同学,可以告知我一下。
-
在 Qincai.Web.Host 项目中的 appsettings.json 中修改连接字符串。
例如这里,是我在本地由 Docker 启动的 MySQL。
-
找到 Qincai.EntityFrameCore 项目下的 QincaiDbContextConfigurer.cs 文件,修改两处注释的地方。
using System.Data.Common; using Microsoft.EntityFrameworkCore; namespace Qincai.EntityFrameworkCore { public static class QincaiDbContextConfigurer { public static void Configure(DbContextOptionsBuilder<QincaiDbContext> builder, string connectionString) { //builder.UseSqlServer(connectionString); builder.UseMySql(connectionString); } public static void Configure(DbContextOptionsBuilder<QincaiDbContext> builder, DbConnection connection) { //builder.UseSqlServer(connection); builder.UseMySql(connection); } } }
-
如下图添加 Migration。
这里需要注意的是,默认项目必须修改为 Qincai.EntityFrameworkCore 项目,并且你解决方案的启动项目需要设置为 Qincai.Web.Host 项目。
- 然后,就正常 Update-Database 完事了。
经历
最开始,要换数据库嘛,先查了下官网这篇流程,然后其实就差不多了,过程很简单。
而在这过程中,可能大家会看到类似这样的提示。
就如同其字面意思,在新版的 SDK 中已经包含了这些工具。如果觉得看得不爽,在对应的 .csproj 文件中找到类似下方的代码,删除即可。
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>