ホームページ > データベース > mysql チュートリアル > .NET Core 2.1 でユーザーとその関連ロールを効率的に取得する方法

.NET Core 2.1 でユーザーとその関連ロールを効率的に取得する方法

Linda Hamilton
リリース: 2024-12-09 19:47:24
オリジナル
773 人が閲覧しました

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

.NET Core 2.1 でのユーザーと関連ロールの取得

ユーザーとそのロールを管理する場合、両方を効率的に取得するメカニズムを備えていることが重要です。この記事では、Identity Framework を使用して .NET Core 2.1 でこのタスクを実行する方法について詳しく説明します。

初期の試行と問題

一般的なアプローチの 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 での積極的な読み込みページ

ユーザーとその関連ロールを取得するには、次のコードを追加します。 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 のロールをさらに積極的に読み込みます。これにより、ユーザーとそのロールの両方をモデル内で使用できるようになります。

以上が.NET Core 2.1 でユーザーとその関連ロールを効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート