一、创建项目
进入ABP框架官网,http://abp.io/,这里创建框架有两种方式,第一种是使用命令行,第二种是在网站直接生成压缩包,本文采用第二种方式。
1、点击GET STRATED->选择DIRECT DOWNLOAD 方式,填写项目信息如下,完成后点CREATE NOW 自动生成一个ABP框架压缩包
解压后,使用VS2019打开解决方案,结构目录如图,然后将ABPBookStore.Web设为启动项
2、数据库更改,数据库默认为SQLserver,现在替换为MYSQL,参考https://dotnet9.com/11978.html
1)在ABPBookStore.Web->appsettings.json中修改链接字符串,修改如下
2)管理“ABPBookStore.EntityFrameworkCore”项目中Nuget程序包,卸载“Volo.Abp.EntityFrameworkCore.SqlServer”包,
浏览安装“Volo.Abp.EntityFrameworkCore.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
命令重新生成迁移。
迁移完成后输入update-database更新数据库
项目可以运行