首页 > 解决方案 > SignInManager 引发无效的对象名称 AspNetUserClaims 异常

问题描述

我是 asp.net 核心的新手。"Invalid object name AspNetUserClaims"当我尝试使用signInManager以登录用户时出现此错误。我不希望在我的应用程序中声明部分,我不为用户存储任何声明。

为了克服这个错误,我创建了AspNetUserClaims表,但没有运气,我仍然遇到同样的异常。

我正在使用 asp.net 核心 2.2

错误截图

在此处输入图像描述

MUser.cs

public class MUser : IdentityUser<Guid>
{
    public ICollection<MUserRole> UserRoles { get; set; }
}

MRole.cs

public class MRole : IdentityRole<Guid>
{
    public MRole() : base() {}
    public MRole(string RoleName) : base(RoleName) { }
    public ICollection<MUserRole> UserRoles { get; set; }
}

MUserRole.cs

public class MUserRole : IdentityUserRole<Guid>
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public Guid Id { get; set; }
    public Guid? TenantId { get; set; }
    public DateTime? CreatedDate { get; set; }
    public Guid? CreatedBy { get; set; }
    public DateTime? ModifiedDate { get; set; }
    public Guid? ModifiedBy { get; set; }
    public virtual MkTenant Tenant { get; set; }
    public virtual MUser User { get; set; }
    public virtual MRole Role { get; set; }
}

CoreIdentityDbContext.cs

public class CoreIdentityDbContext : IdentityDbContext<MUser, MRole, Guid, IdentityUserClaim<Guid>, MUserRole, IdentityUserLogin<Guid>, IdentityRoleClaim<Guid>, IdentityUserToken<Guid>>
{
    public CoreIdentityDbContext(DbContextOptions<DbContext> options)
        : base(options)
    {
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("Server=localhost;Database=myDb;User=sa;password=Baskar123#", b => b.MigrationsAssembly("Mk.MId.Api"));
        }
    }

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

        builder.Entity<MUser>().ToTable("MkUser");
        builder.Entity<MRole>().ToTable("MkRole");
        builder.Entity<MUserRole>().ToTable("MkUserRole");

        //builder.Entity<IdentityUserLogin<Guid>>().ToTable("MUserLogin");
        //builder.Entity<IdentityUserClaim<Guid>>().ToTable("MUserClaim");
        //builder.Entity<IdentityUserToken<Guid>>().ToTable("MUserToken");
        //builder.Entity<IdentityRoleClaim<Guid>>().ToTable("MRoleClaim");

        builder.Entity<MUserRole>(userRole =>
        {
            //userRole.(ur => ur.Id );

            userRole.HasOne(ur => ur.Role)
                .WithMany(r => r.UserRoles)
                .HasForeignKey(ur => ur.RoleId)
                .IsRequired();

            userRole.HasOne(ur => ur.User)
                .WithMany(r => r.UserRoles)
                .HasForeignKey(ur => ur.UserId)
                .IsRequired();
        });

    }
}

标签: c#asp.net-coreasp.net-core-identityasp.net-core-2.2

解决方案


推荐阅读