Dalam mengurus pengguna dan peranan mereka, adalah penting untuk mempunyai mekanisme untuk mendapatkan kedua-duanya dengan cekap. Artikel ini membincangkan cara untuk menyelesaikan tugas ini dalam .NET Core 2.1 menggunakan Rangka Kerja Identiti.
Satu pendekatan biasa melibatkan pengubahsuaian kelas ApplicationUser untuk memasukkan sifat Peranan. Walau bagaimanapun, ini tidak lagi disokong dalam Teras .NET. Percubaan untuk menggunakan pelaksanaan ini akan mengakibatkan ralat apabila cuba memasukkan peranan dalam pertanyaan.
Untuk mengatasi isu ini, jadual perhubungan tersuai diperlukan. Jadual ini akan menyambungkan jadual ApplicationUser dan IdentityRole, membolehkan kami mendapatkan semula pengguna dan peranan mereka yang berkaitan.
Entiti berikut mentakrifkan perhubungan ini:
ApplicationDbContext mesti dikemas kini untuk mengendalikan entiti ini dan hubungannya:
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(); } }
Untuk mendapatkan semula pengguna dan peranan mereka yang berkaitan, kod berikut ditambahkan pada Halaman Pisau Cukur:
public IActionResult OnGetAsync() { this.Users = userManager.Users .Include(u => u.UserRoles) .ThenInclude(ur => ur.Role) .ToList(); return Page(); }
Bahagian ".Include(u => u.UserRoles)" dengan penuh semangat memuatkan UserRole untuk setiap pengguna. Bahagian ".ThenInclude(ur => ur.Role)" terus bersemangat memuatkan Peranan untuk setiap UserRole. Ini memastikan kedua-dua pengguna dan peranan mereka tersedia dalam model.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Pengguna dan Peranan Berkaitan Mereka dengan Cekap dalam .NET Core 2.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!