ABP框架使用(一)框架生成+MySQL数据库更改

时间:2024-05-23 21:50:01

一、创建项目

进入ABP框架官网,http://abp.io/,这里创建框架有两种方式,第一种是使用命令行,第二种是在网站直接生成压缩包,本文采用第二种方式。

1、点击GET STRATED->选择DIRECT DOWNLOAD 方式,填写项目信息如下,完成后点CREATE NOW 自动生成一个ABP框架压缩包

ABP框架使用(一)框架生成+MySQL数据库更改

解压后,使用VS2019打开解决方案,结构目录如图,然后将ABPBookStore.Web设为启动项

ABP框架使用(一)框架生成+MySQL数据库更改

2、数据库更改,数据库默认为SQLserver,现在替换为MYSQL,参考https://dotnet9.com/11978.html

1)在ABPBookStore.Web->appsettings.json中修改链接字符串,修改如下

ABP框架使用(一)框架生成+MySQL数据库更改

2)管理“ABPBookStore.EntityFrameworkCore”项目中Nuget程序包,卸载“Volo.Abp.EntityFrameworkCore.SqlServer”包,

ABP框架使用(一)框架生成+MySQL数据库更改

浏览安装“Volo.Abp.EntityFrameworkCore.MySQL”程序包

ABP框架使用(一)框架生成+MySQL数据库更改

3)修改其中的错误提示

“ABPBookStore.EntityFrameworkCore”项目中的ABPBookStoreEntityFrameworkCoreModule.cs文件中options.UseSQLServer()
修改为:options.UseMySQL()
将依赖项目“typeof(AbpEntityFrameworkCoreSqlServerModule)”修改为“typeof(AbpEntityFrameworkCoreMySQLModule)”。添加相应引用,并删除无效的using引用。

“ABPBookStore.EntityFrameworkCore.DbMigrations”项目中,EntityFrameworkCore文件夹下的ABPBookStoreMigrationsDbContextFactory.CS文件中

将var builder = new DbContextOptionsBuilder<ABPBookStoreMigrationsDbContext>()
                .UseSqlServer(configuration.GetConnectionString("Default"));

修改为var builder = new DbContextOptionsBuilder<ABPBookStoreMigrationsDbContext>()
                .UseMySql(configuration.GetConnectionString("Default"));

4)修改Web项中的错误

删除”ABPBookStore.EntityFrameworkCore.DbMigrations”项目下的Migrator文件夹,重新生成解决方案
 

5)修改无法创建表IdentityServerApiSecurity的错误

ABPBookStore.EntityFrameworkCore项目,“EntityFrameworkCore”文件夹下,添加IdentityServerModelCreatingExtensions类。代码如下:

public static class IdentityServerModelCreatingExtensions

{

public static void ConfigureIdentityServerForMySQL(this ModelBuilder builder)

{

// Solve the problem of MySQL migration

// https://github.com/abpframework/abp/issues/1920

builder.Entity<ApiSecret>(b =>

{

// After trying, you can also set it to 400

b.Property(x => x.Value).HasMaxLength(300);

});

builder.Entity<ClientPostLogoutRedirectUri>(b =>

{

b.Property(x => x.PostLogoutRedirectUri).HasMaxLength(300); // or 400 ?

});

builder.Entity<ClientRedirectUri>(b =>

{

b.Property(x => x.RedirectUri).HasMaxLength(300); // or 400 ?

});

builder.Entity<ClientSecret>(b =>

{

b.Property(x => x.Value).HasMaxLength(300); // or 400 ?

});

}

}

ABPBookStoreDbContext类中OnModelCreating方法末尾,添加如下代码,并添加对应using引用:

builder.ConfigureIdentityServer(options =>

{

options.DatabaseProvider = EfCoreDatabaseProvider.MySql;

});

builder.ConfigureIdentityServerForMySQL();

ABPBookStoreDbContextModelCreatingExtensions文件中ConfigureABPBookStore方法下添加如下代码:

builder.ConfigureIdentityServer(options =>

{

options.DatabaseProvider = EfCoreDatabaseProvider.MySql;

});

6)重新生成迁移

重新生成解决方案,将ABPBookStore.Web项目设置为启动项目,选择工具->NuGet包管理->程序包管理控制台,将默认项目设置为“ABPBookStore.EntityFrameworkCore.DbMigrations”,输入add-migration命令重新生成迁移。

 

ABP框架使用(一)框架生成+MySQL数据库更改

迁移完成后输入update-database更新数据库

项目可以运行