abp更改为mysql_构建ABP vNext项目并切换MySql数据库

一:开发环境

开发工具:Vs2019 16.6.0

运行时:. Net Core 3.1

数据库:MySql

abp版本:2.7.0

二:构建项目

1、安装abp CLT

dotnet tool install -g Volo.Abp.Cli

2、如果之前安装过,则更新

dotnet tool update -g Volo.Abp.Cli

3、使用abp官方CLI工具创建项目

abp new Dnc.Abp

三:切换Mysql

目前只支持构建mongodb、SqlServer数据库,需要手动切换Mysql数据库

1、使用 Vs 2019 16.6.0  打开项目,进行Nuget还原

2、修改数据库连接字符串

在Dnc.Abp.Web项目中appsettings.json文件修改数据库连接字符串

"ConnectionStrings": {"Default": "Server=localhost;Database=test;Uid=wuzhd;Pwd=xxxxxx"},

3、管理“Dnc.Abp.EntityFrameworkCore”项目中Nuget程序包,卸载其中的“Volo.Abp.EntityFrameworkCore.SqlServer”包,并浏览安装“Volo.Abp.EntityFrameworkCore.MySQL”程序包。如下图

ab28b035983f9096623ff397c48b1298.png

4、切换Mysql

4.1、在 Dnc.Abp.EntityFrameworkCore 项目下 AbpEntityFrameworkCoreModule.cs 文件中修改 Configure 为 options.UseMySQL();

4.2、将依赖项目  typeof(AbpEntityFrameworkCoreSqlServerModule) 修改为 typeof(AbpEntityFrameworkCoreMySQLModule)

bb7b9b9f483dfbdeb01ce7adaf3bde7f.png

4.3、在 Dnc.Abp.EntityFrameworkCore.DbMigrations 项目下 AbpMigrationsDbContextFactory.cs 文件中修改为.UseMySql

var builder = new DbContextOptionsBuilder()

.UseMySql(configuration.GetConnectionString("Default"));

c9fd025a1a5a7486b191609b4439947f.png

4.4、在 Dnc.Abp.EntityFrameworkCore 项目下 OnModelCreating 方法中增加如下配置

builder.ConfigureIdentityServer(options =>{

options.DatabaseProvider=EfCoreDatabaseProvider.MySql;

});

5、生成迁移

至此,Mysql配置的修改基本完成,项目也没有错误提示了,将Dnc.Abp.Web项目设置为启动项目,在程序包管理控制台,将默认项目设置为“Dnc.Abp.EntityFrameworkCore.DbMigrations”,输入add-migration命令重新生成迁移。

M> add-migration

位于命令管道位置1 的 cmdlet Add-Migration

请为以下参数提供值:

Name: init

Build started...

Build succeeded.

To undothis action, use Remove-Migration.

PM>

如上,可以正常生成迁移文件。但是如果在执行update-database时,提示如下错误:

Failed executing DbCommand (3ms) [Parameters=[], CommandType='Text', CommandTimeout='30']

CREATE TABLE IdentityServerApiSecrets (

`Type` varchar(250) CHARACTER SET utf8mb4 NOT NULL,

`Value` longtext CHARACTER SET utf8mb4 NOT NULL,

`ApiResourceId` char(36) NOT NULL,

`Description` varchar(2000) CHARACTER SET utf8mb4 NULL,

`Expiration` datetime(6) NULL,

CONSTRAINT `PK_IdentityServerApiSecrets` PRIMARY KEY (`ApiResourceId`, `Type`, `Value`),

CONSTRAINT `FK_IdentityServerApiSecrets_IdentityServerApiResources_ApiResou~` FOREIGN KEY (`ApiResourceId`) REFERENCES `IdentityServerApiResources` (`Id`) ON DELETE CASCADE

);

.....

BLOB/TEXT column 'Value' used in key specification without a key length

解决方法为;在 Dnc.Abp.EntityFrameworkCore 项目OnModelCreating方法中增加如下配置:

builder.ConfigureIdentityServer(options =>{

options.DatabaseProvider=EfCoreDatabaseProvider.MySql;

});

全部修改完成后,删除Migration文件夹,重新执行add-migration生成迁移,并执行update-database命令,同步数据库。成功!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值