首页 > 解决方案 > 尝试访问 Claims Identity Core 时出错

问题描述

我在尝试从 Entity Framework Core 访问声明时收到此错误。

列名“UserId1”无效。

奇怪的是我在课堂上没有 UserId1。

我的用户类看起来像:

public partial class User : IdentityUser
{
     public string FirstName {get;set;}
     public string LastName {get;set;}

     ... other properties

    public virtual ICollection<UserClaim> UserClaim { get; set; }
}

我的用户声明类如下所示:

public partial class UserClaim : Microsoft.AspNetCore.Identity.IdentityUserClaim<string>
{
    public byte[] Version { get; set; }

    public virtual User User { get; set; }
}

我实际上在这一行得到了错误:

var userClaims = await _userManager.GetClaimsAsync(user);

标签: asp.net-coreentity-framework-core

解决方案


如下配置您的模型:

public partial class User : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual ICollection<UserClaim> UserClaim { get; set; }
}
public partial class UserClaim : Microsoft.AspNetCore.Identity.IdentityUserClaim<string>
{
    public byte[] Version { get; set; }
}

数据库上下文:

public class ApplicationDbContext : IdentityDbContext<User, IdentityRole, string, UserClaim, IdentityUserRole<string>, IdentityUserLogin<string>,IdentityRoleClaim<string>,IdentityUserToken<string>>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<User>(b =>
        {
            // Each User can have many UserClaims
            b.HasMany(e => e.UserClaim)
                .WithOne()
                .HasForeignKey(uc => uc.UserId)
                .IsRequired();
        });
    }
}

推荐阅读