Modified by D 的博客

ABP 使用 MySQL 记录

从 ABP 官网生成的模版默认使用的是 SQL Server,但项目部署在 Linux 上,使用的是 MySQL,所以需要将数据库迁移到 MySQL,使用的版本 4.0.1, 具体步骤如下

1. 确认 MySql 默认使用的是 utf8,不然首次启动初始化数据时会报错

mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.7.22-22, for Linux (x86_64) using  EditLine wrapper

Connection id:      9256
Current database:   wid_auth
Current user:       wid_user_write@172.16.96.136
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.22-22-log Source distribution
Protocol version:   10
Connection:     172.16.96.136 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         9 days 1 hour 4 min 7 sec

Threads: 1  Questions: 90744  Slow queries: 0  Opens: 252  Flush tables: 1  Open tables: 182  Queries per second avg: 0.116
--------------

2. 删除默认 SQL Server 的引用包

在 EntityFrameworkCore 结尾项目中删除 Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Design 两个引用

3. 添加 MySQL 的 EF 包

这里有两个选择,Oracle 官方的和 Pomelo 的,之前 .net core 2.1 刚出的时候就使用 Oracel 官方的但是有问题并不支持 2.1,转换 Pomelo,虽然 Pomelo 稳定版也不支持,但是 有 Pre 版支持,就转使用 Pomelo 的,过不了几天 Pomelo 更新稳定版本也支持了,所以 Pomelo 在跟进方面比官方的好,这里推荐使用 Pomelo

在 NuGet 包管理中,将 Pomelo.EntityFrameworkCore.MySql 和Pomelo.EntityFrameworkCore.MySql.Design 两包添加到以 EntityFrameworkCore 结尾项目中

4. 修改 EntityFrameworkCore 项目中 DbContextConfigurer.cs 结尾的源码

public static class AbpDbContextConfigurer
{
        public static void Configure(DbContextOptionsBuilder<AbpBasicDbContext> builder, string connectionString)
        {
            //builder.UseSqlServer(connectionString); 默认 SqlServer 改为 MySql
            builder.UseMySql(connectionString);
        }

        public static void Configure(DbContextOptionsBuilder<AbpBasicDbContext> builder, DbConnection connection)
        {
            //builder.UseSqlServer(connection);  默认 SqlServer 改为 MySql
            builder.UseMySql(connection);
        }
}

5. 修改配置文件中的数据库连接字符串, Host 项目的 appsetting.json 文件

"ConnectionStrings": {
    //"Default": "Server=localhost; Database=AbpDb; Trusted_Connection=True;"
    "Default": "Server=localhost; port=3306; Database=AbpDb; uid=root; pwd=****; Convert Zero Datetime=True"
}

6. 生成 MySQL 数据

  • 删除 .EntityFrameworkCore 项目下 Migrations 目录下的所有 SQLServer 迁移文件。

  • 将 Host 项目改为启动项目

  • 打开VS的包管理,并 .EntityFrameworkCore 项目设为默认项目,执行脚本生成数据库

Update-Database

7. 编译项目,开始运行即可


发表评论

评论列表,共 0 条评论

    暂无评论