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

C# Asp.Net MVC Core Identity迁移忽略ASPNETUsers表新增列问题

问题排查与解决办法

1. 检查DbContext配置

你的DbContext必须继承IdentityDbContext<ApplicationUser>,而非默认的IdentityDbContext(默认使用原生IdentityUser,无法识别自定义字段)。代码示例:

public class AppDbContext : IdentityDbContext<ApplicationUser>
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }
}

2. 确认ApplicationUser的字段权限

EF Core无法识别私有/受保护字段,新增字段必须添加public修饰符:

public class ApplicationUser : IdentityUser
{
    public string FullName { get; set; } // 必须为public
    public DateTime DateOfBirth { get; set; }
}

3. 清理旧迁移重新生成

若之前创建过基于默认IdentityUser的迁移,快照文件会保留旧结构,导致新字段被忽略。操作步骤:

  • 删除项目Migrations文件夹下的所有迁移文件和快照文件
  • 重新执行命令:
    dotnet ef migrations add "CreateProdAuthDatabase"
    dotnet ef database update
    

4. 强制EF Core识别自定义字段

在DbContext的OnModelCreating方法中显式配置ApplicationUser,确保EF Core不会遗漏字段:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<ApplicationUser>(entity =>
    {
        entity.Property(u => u.FullName).IsRequired().HasMaxLength(100);
        entity.Property(u => u.DateOfBirth).IsRequired();
    });
}

5. 核对连接字符串

确认appsettings.json中的连接字符串确实指向Azure上的目标空数据库,避免误迁移到本地或其他数据库实例。

6. 极端情况:清空数据库重来

若上述步骤均无效,由于你的数据库是全新无业务数据的状态,可直接删除Azure数据库中的所有表,再删除本地迁移文件,重新执行迁移和更新命令。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:15:02