>데이터 베이스 >MySQL 튜토리얼 >.NET Core 2.1 ID에서 모든 사용자 및 관련 역할을 효율적으로 검색하는 방법은 무엇입니까?

.NET Core 2.1 ID에서 모든 사용자 및 관련 역할을 효율적으로 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-02 07:29:10464검색

How to Efficiently Retrieve All Users and Their Associated Roles in .NET Core 2.1 Identity?

.NET Core 2.1 ID에서 연결된 역할을 가진 모든 사용자를 검색하는 방법

검색 시 발생하는 어려움에서 알 수 있듯이 사용자 관리와 관련된 데이터베이스 작업을 수행하는 것은 복잡할 수 있습니다. 연관된 역할이 있는 모든 ID 사용자.

문제: 관계 액세스 오류

제공된 컨텍스트에 설명된 대로 각 IdentityUser의 역할 속성에 액세스하려고 하면 오류가 발생합니다. 이 오류는 .NET Core의 IdentityUser 엔터티 변경으로 인해 발생합니다. 이전 버전에서는 IdentityUser에 Roles 속성이 있었지만 더 이상 그렇지 않습니다.

해결책: 사용자 지정 엔터티 구현

이 문제를 극복하려면 사용자 역할

애플리케이션사용자:

public class ApplicationUser : IdentityUser
{
    public ICollection<ApplicationUserRole> UserRoles { get; set; }
}

애플리케이션 UserRole:

public class ApplicationUserRole : IdentityUserRole<string>
{
    public virtual ApplicationUser User { get; set; }
    public virtual ApplicationRole Role { get; set; }
}

ApplicationRole:

public class ApplicationRole : IdentityRole
{
    public ICollection<ApplicationUserRole> UserRoles { get; set; }
}

DbContext 업데이트:

public class ApplicationDbContext
    : IdentityDbContext<ApplicationUser, ApplicationRole, string, IdentityUserClaim<string>,
    ApplicationUserRole, IdentityUserLogin<string>,
    IdentityRoleClaim<string>, IdentityUserToken<string>>
{
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.Entity<ApplicationUserRole>(userRole =>
        {
            userRole.HasKey(ur => new { ur.UserId, ur.RoleId });

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

시작 수정:

services.AddIdentity<ApplicationUser, ApplicationRole>(options => options.Stores.MaxLengthForKeys = 128)
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

데이터 검색:

사용자 역할 및 역할:

this.Users = userManager.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).ToList();

이러한 사용자 지정 엔터티를 구현하고 데이터베이스 컨텍스트를 업데이트하면 .NET Core 2.1 ID에서 모든 사용자 및 관련 역할을 검색할 수 있습니다.

위 내용은 .NET Core 2.1 ID에서 모든 사용자 및 관련 역할을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.