Ошибка при попытке доступа к утверждению Identity Core - PullRequest
0 голосов
/ 25 марта 2020

Я получаю эту ошибку, когда пытаюсь получить доступ к утверждениям из 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; }
}

I на самом деле получаю ошибку в этой строке:

var userClaims = await _userManager.GetClaimsAsync(user);

1 Ответ

1 голос
/ 26 марта 2020

Настройте свою модель, как показано ниже:

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; }
}

DbContext:

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();
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...