使用MySQL

使用 MySQL

起因

因为我自用的服务器只是腾讯云 1 核 1G 的学生机,不方便装 SQL Server,所以转而 MySQL。

这里使用的 MySQL 版本号为 8.0。

解决方案

  1. 删除 Qincai.EntityFrameCore 项目中现有的针对 SQL Server 的迁移文件,即 Migrations 文件夹。
  2. 为 Qincai.EntityFrameCore 项目,添加 Pomelo.EntityFrameworkCore.MySqlNuGet 引用,并删除对 Microsoft.EntityFrameworkCore.SqlServer 的引用。

    Orcale 官方也有提供 MySql.Data.EntityFrameworkCore ,但在之前我使用的时候(18 年 10 月)还存在一些 Bug,不知道现在有没有修复。如果有知道的同学,可以告知我一下。

  3. 在 Qincai.Web.Host 项目中的 appsettings.json 中修改连接字符串。

    修改连接字符串

    例如这里,是我在本地由 Docker 启动的 MySQL。

  4. 找到 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);
           }
       }
    }
  5. 如下图添加 Migration。 添加Migration

    这里需要注意的是,默认项目必须修改为 Qincai.EntityFrameworkCore 项目,并且你解决方案的启动项目需要设置为 Qincai.Web.Host 项目。

  6. 然后,就正常 Update-Database 完事了。

经历

最开始,要换数据库嘛,先查了下官网这篇流程,然后其实就差不多了,过程很简单。

而在这过程中,可能大家会看到类似这样的提示。

错误提示

就如同其字面意思,在新版的 SDK 中已经包含了这些工具。如果觉得看得不爽,在对应的 .csproj 文件中找到类似下方的代码,删除即可。

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
支付宝收款码
Copyright © yiluomyt 2020