Abp vNext使用MySql数据库

首先使用ABP CLI创建项目,例如名为Book

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

Book.Web项目中,打开‘appsetting.json’文件,修改连接字符串为MySql:

"ConnectionStrings": {
  "Default": "server=localhost;port=3306;database=testdb;User ID=root;Password=123456;"
},
2、添加MySql Nuget程序包

打开Book.EntityFrameworkCore程序的Nuget程序包,卸载
Volo.Abp.EntityFrameworkCore.SqlServer包,安装Volo.Abp.EntityFrameworkCore.MySQL包,如下图:
Abp MySQL包

3、修改错误代码

(1)Book.EntityFrameworkCore项目中的BookEntityFrameworkCoreModule.cs文件中的options.UseSQLServer()改为options.UseMySQL()
将依赖项目typeof(AbpEntityFrameworkCoreSqlServerModule)改为typeof(AbpEntityFrameworkCoreMySQLModule)
修改错误
(2)Book.EntityFrameworkCore.DbMigrations项目中的BookStoreMigrationsDbContextFactory.cs文件中

var builder = new DbContextOptionsBuilder<EyinzhangMigrationsDbContext()
				.UseSqlServer(configuration.GetConnectionString("Default"));

修改为:

var builder = new DbContextOptionsBuilder<EyinzhangMigrationsDbContext>()
                .UseMySql(configuration.GetConnectionString("Default"));

如下图:
修改错误

4、重新生成迁移

如果update-database出现错误CREATE TABLE IdentityServerApiSecrets,修改方法如下,在Book.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 ?
        });
    }
}

BookDbContext类中的OnModelCreating方法末尾,添加以下代码:

builder.ConfigureIdentityServer(options =>
{
    options.DatabaseProvider = EfCoreDatabaseProvider.MySql;
});
builder.ConfigureIdentityServerForMySQL();

BookDbContextModelCreatingExtensions类中的ConfigureEyinzhang方法添加以下代码:

builder.ConfigureIdentityServer(options =>
{
    options.DatabaseProvider = EfCoreDatabaseProvider.MySql;
});

修改之后就可以更新数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值