解决NETCORE2.0 IdentityServer4.EntityFramework 在Mysql上字段过长的问题

  和Identity的问题相似,通过替换掉默认的PersistedGrantDbContext来实现

  新建一个 PersistedGrantMysqlDbContext类 实现默认提供的PersistedGrantDbContext 
public class PersistedGrantMysqlDbContext : PersistedGrantDbContext<PersistedGrantDbContext>
{
    public PersistedGrantMysqlDbContext(DbContextOptions<PersistedGrantMysqlDbContext> options, OperationalStoreOptions storeOptions) : base(options, storeOptions)
    {
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity("IdentityServer4.EntityFramework.Entities.PersistedGrant", e => e.Property<string>("Data").HasMaxLength(20000));//这里原来是5W 超长了
    }
}

 

  在Startup中注入我们自己实现的方法

 1 services.AddIdentityServer()
 2 //这里省略了其他的方法
 3 .AddOperationalStore<PersistedGrantMysqlDbContext>(options =>//PersistedGrantMysqlDbContext替代默认方法
 4 {//存储Token Grants等信息
 5     options.ConfigureDbContext = builder =>
 6     {
 7         //builder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")
 8         builder.UseMySQL(Configuration.GetConnectionString("MysqlConnection")
 9         , sql => sql.MigrationsAssembly(migrationAssembly));
10     };
11 })

 

 之后执行数据库迁移命令 数据库可以正常生成了!

转载于:https://www.cnblogs.com/CandLx/p/8625413.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值