You need to enable JavaScript to run this app. Blazor Server自定义Identity Model时EF迁移未识别ApplicationUser新增属性
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server自定义Identity Model时EF迁移未识别ApplicationUser新增属性

你的实现思路完全正确,迁移无法识别自定义用户属性的问题不属于Blazor专属配置遗漏,核心原因是ApplicationDbContext的泛型绑定未同步修改,对应修复方案如下:

1. 修正ApplicationDbContext继承定义

默认项目模板生成的ApplicationDbContext默认绑定原生IdentityUser,需修改父类的泛型参数为你的自定义类:

// 修改前
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

// 修改后
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

完成该修改后EF Core才能正确识别ApplicationUser的扩展属性。

2. 清理历史迁移重新生成

如果之前已经基于原生IdentityUser生成过初始迁移,需先删除项目Migrations目录下的所有文件、删除已创建的数据库,再重新执行迁移命令:

Add-Migration InitialCreate
Update-Database

新生成的迁移的Up方法会自动包含FullName、MobileNumber、IdentityNumber三个字段的创建逻辑。

3. 手动修改迁移兼容方案

如果你不需要清空历史迁移,可直接手动补充字段定义,在新增的迁移的Up方法中添加以下代码:

migrationBuilder.AddColumn<string>(
    name: "FullName",
    table: "AspNetUsers",
    maxLength: 256,
    nullable: true);
migrationBuilder.AddColumn<string>(
    name: "MobileNumber",
    table: "AspNetUsers",
    maxLength: 32,
    nullable: true);
migrationBuilder.AddColumn<string>(
    name: "IdentityNumber",
    table: "AspNetUsers",
    maxLength: 64,
    nullable: true);

同时在Down方法中补充对应删除逻辑即可:

migrationBuilder.DropColumn(
    name: "FullName",
    table: "AspNetUsers");
migrationBuilder.DropColumn(
    name: "MobileNumber",
    table: "AspNetUsers");
migrationBuilder.DropColumn(
    name: "IdentityNumber",
    table: "AspNetUsers");

手动添加的字段和EF自动生成的字段效果完全一致,不会影响后续Identity功能的正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 03:54:04