ABP 框架 Entity Framework使用MySql数据库迁移报错问题解决方案

ABP Entity Framework迁移使用MySql数据库报错问题解决方案

一、迁移说明

ABP模板项目Entity Framework Core默认使用的是Sql Server,也很容易将数据库迁移到MySQL,步骤如下。

二、迁移MySQL步骤

1、 下载项目

请到 http://aspnetboilerplate.com/Templates 下载一个新的项目,选择ASP.NET Core 2.x标签,Target Framework:选中.Net Core就可以了。

2、 移除默认SQL Server相关包

在EntityFrameworkCore项目下移除包Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Design
在这里插入图片描述

3、 添加MySql程序包

添加程序包Pomelo.EntityFrameworkCore.MySql、Pomelo.EntityFrameworkCore.MySql.Design

在这里插入图片描述

4、 修改源代码

修改DbContextConfigurer

public static class AbpBasicDbContextConfigurer
{
        public static void Configure(DbContextOptionsBuilder<AbpBasicDbContext> builder, string connectionString)
        {
            //builder.UseSqlServer(connectionString);
            builder.UseMySql(connectionString);
        }

        public static void Configure(DbContextOptionsBuilder<AbpBasicDbContext> builder, DbConnection connection)
        {
            //builder.UseSqlServer(connection);
            builder.UseMySql(connection);
        }
}

在这里插入图片描述

5、 修改数据库链接字符串

在web项目配置文件appsettings.json

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

在这里插入图片描述
6、 数据迁移

重新生成迁移文件

在下载启动模板的时候,如果你选择了包含 Module Zero。这里会有一些迁移文件会包含在你的项目中,但是这些文件是为Sql Server迁移使用的。请打开 .EntityFramework 项目中的Migrations文件夹,然后删除这些迁移文件。迁移文件是以时间戳开始的。迁移文件的名字像这样:201506210746108_AbpZero_Initial。

在这里插入图片描述

在删除所有的迁移文件后,选择你的 .Web 项目为开始项目,打开VS的包管理控制台,并在包管理控制台中选择 .EntityFramework 项目作为默认项目。然后在控制台中执行下面命令:

Add-Migration “AbpZero_Initial”
在这里插入图片描述

在ABP后面版本会报错:

Your startup project ‘ABP.Web.Host’ doesn’t reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.

只需要在Web.Host项目安装对应版本的nuget包 Microsoft.EntityFrameworkCore.Tools,然后重新运行命令:Add-Migration “AbpZero_Initial” 即可

现在你可以使用下面命令来创建数据库:

Update-Database
在这里插入图片描述

所有的事情都已完成,检查 MySQL数据库已生产成功

在这里插入图片描述 process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01haUtlcl9pbmk=,size_16,color_FFFFFF,t_70)
7、 完成MySQL迁移后运行浏览报错
在这里插入图片描述
这是由于MySql的编码方式和EF数据库迁移的不一样。
解决方法:
1)、输入:show variables like ‘%char%’;默认默认在这里插入图片描述
默认情况下在database 和 server 两处不是utf-8,如果出现这样的情况就是对的。

2)、接下来在下图的路径下照到my文件
在这里插入图片描述

[mysqld]
character-set-server = utf8

[client]
default-character-set = utf8

3)、在my文件里放入 上述代码段,然后重试第一步。如果图里跟我的一样表示成功。或者在以下地址下载my文件直接替换。
链接: https://pan.baidu.com/s/1esAh9fS_1MDwBvuLpFxPwg 提取码: 7djp

8.删除数据库,重新迁移,成功!
在这里插入图片描述

原文链接: [https:/https://www.cnblogs.com/donaldtdz/p/8149598.html/mp.csdn.net]
[https://www.cnblogs.com/sleeping-dog/p/10007017.html]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值