首頁 > 資料庫 > mysql教程 > 如何在.NET Core 2.1中有效地檢索使用者及其關聯角色?

如何在.NET Core 2.1中有效地檢索使用者及其關聯角色?

Linda Hamilton
發布: 2024-12-09 19:47:24
原創
788 人瀏覽過

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

在 .NET Core 2.1 中檢索使用者和關聯角色

在管理使用者及其角色時,擁有有效檢索兩者的機制至關重要。本文深入探討如何使用 Identity Framework 在 .NET Core 2.1 中完成此任務。

初始嘗試和問題

一種常見方法涉及修改 ApplicationUser 類別以包含 Roles 屬性。但是,.NET Core 不再支援此功能。嘗試使用此實作將導致在查詢中包含角色時出錯。

實作自訂關係表

要解決此問題,需要自訂關係表。該表將連接 ApplicationUser 和 IdentityRole 表,使我們能夠檢索使用者及其關聯的角色。

以下實體定義此關係:

  • ApplicationUser:代表應用程式使用者。
  • ApplicationUserRole:將使用者連結到角色。
  • ApplicationRole:代表應用程式

設定DbContext

必須更新ApplicationDbContext 以處理這些實體及其關係:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
    protected override void OnModelCreating(ModelBuilder builder)
    {
        // Define the relationship between ApplicationUser and ApplicationUserRole
        builder.Entity<ApplicationUserRole>()
            .HasKey(ur => new { ur.UserId, ur.RoleId });
        builder.Entity<ApplicationUserRole>()
            .HasOne(ur => ur.User)
            .WithMany(u => u.UserRoles)
            .HasForeignKey(ur => ur.UserId)
            .IsRequired();
        builder.Entity<ApplicationUserRole>()
            .HasOne(ur => ur.Role)
            .WithMany(r => r.UserRoles)
            .HasForeignKey(ur => ur.RoleId)
            .IsRequired();
    }
}
登入後複製
中的預載

為了檢索使用者及其關聯的角色,將以下程式碼加入Razor頁面:

public IActionResult OnGetAsync()
{
    this.Users = userManager.Users
        .Include(u => u.UserRoles)
        .ThenInclude(ur => ur.Role)
        .ToList();
    return Page();
}
登入後複製
「.Include(u => u.UserRoles)」部分急切地載入每個使用者的UserRoles。 「.ThenInclude(ur => ur.Role)」部分進一步急切地載入每個 UserRole 的 Role。這確保了用戶及其角色在模型中可用。

以上是如何在.NET Core 2.1中有效地檢索使用者及其關聯角色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板