You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenIddict运行报错:无法为OpenIddictEntityFrameworkCoreApplication创建DbSet

问题原因

该错误是由于OpenIddict的内置EF Core实体未注册到你的ApplicationDbContext模型中,EF Core无法识别OpenIddictEntityFrameworkCoreApplication等OpenIddict预置实体类型导致的。

解决方案

你只需要修改ApplicationDbContext的配置,手动注册OpenIddict的实体映射即可,无需改动现有OpenIddict服务配置:

第一步:修改ApplicationDbContext代码

重写上下文的OnModelCreating方法,调用OpenIddict提供的模型配置扩展方法:

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options): base(options) {   }

// 新增以下代码
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // 先执行原有Identity的模型配置
    base.OnModelCreating(modelBuilder);

    // 注册OpenIddict所有内置实体的EF Core映射规则
    modelBuilder.UseOpenIddict();
}

第二步:生成并执行数据库迁移

修改完成后需要执行EF Core迁移,将OpenIddict对应的表结构同步到数据库:

  • 包管理器控制台命令:
    Add-Migration AddOpenIddictTables
    Update-Database
    
  • dotnet CLI命令:
    dotnet ef migrations add AddOpenIddictTables
    dotnet ef database update
    

如果你自定义了OpenIddict的默认实体(比如扩展了应用、授权、令牌等实体字段),只需要调用对应泛型版本的UseOpenIddict<TApplication, TAuthorization, TScope, TToken, TKey>方法,传入你自定义的实体类型和主键类型即可。

内容的提问来源于stack exchange,提问作者Mark Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:45:04