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

如何让Scaffold-DbContext生成继承IdentityDbContext的.NET Core上下文?

解决Scaffold-DbContext生成上下文继承IdentityDbContext的问题

不用每次手动修改,有两种实用方案:

方案一:自定义T4模板(一劳永逸,生成时直接得到目标继承关系)

  1. 先导出默认的Scaffold模板到项目的Templates文件夹,执行命令:
Scaffold-DbContext -OutputDir Models -ContextDir Data -Context OrderSystemVContext "你的数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer -Force -TemplateDir Templates
  1. 找到Templates文件夹下的DbContext.tt文件,打开后修改两处:
    • 在模板顶部添加必要的using引用:
      <#@ import namespace="Microsoft.AspNetCore.Identity.EntityFrameworkCore" #>
      <#@ import namespace="你的项目命名空间.Models" #> <!-- 替换成AppUser、AppRole所在的命名空间 -->
      
    • 找到生成上下文类的代码行(类似<#= Accessibility.ForType(contextClass) #> partial class <#= contextClass.Name #> : DbContext),把: DbContext改成: IdentityDbContext<AppUser, AppRole, int>
  2. 之后每次执行Scaffold-DbContext命令时,加上-TemplateDir Templates参数,生成的上下文就会直接继承IdentityDbContext<AppUser, AppRole, int>。

方案二:拆分Partial类(无需修改模板,更轻量化)

  1. 第一次执行Scaffold-DbContext生成默认的OrderSystemVContext : DbContext后,保留自动生成的partial类文件(比如OrderSystemVContext.cs)。
  2. 新建一个同名的partial类文件,比如OrderSystemVContext.Identity.cs,写入以下代码:
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using 你的项目命名空间.Models; // 替换成AppUser、AppRole的命名空间

namespace 你的项目命名空间.Data; // 替换成上下文所在的命名空间

public partial class OrderSystemVContext : IdentityDbContext<AppUser, AppRole, int>
{
    public OrderSystemVContext(DbContextOptions<OrderSystemVContext> options) : base(options)
    {
    }
}
  1. 删除自动生成的OrderSystemVContext.cs里的: DbContext继承声明(partial类只要有一个定义了继承关系即可)。
  2. 以后每次执行Scaffold-DbContext时用-Force参数覆盖自动生成的OrderSystemVContext.cs,只会更新实体和DbSet部分,不会影响你自己写的继承IdentityDbContext的partial类,自然不用手动修改继承关系。

注意事项

  • 确保项目已安装Microsoft.AspNetCore.Identity.EntityFrameworkCore NuGet包。
  • AppUser需继承IdentityUser<int>,AppRole需继承IdentityRole<int>,确保泛型参数匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:22:14