Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Kembali Semua Pengguna dan Peranan Berkaitan Mereka dengan Cekap dalam Identiti .NET Core 2.1?
Melaksanakan operasi pangkalan data yang melibatkan pengurusan pengguna boleh menjadi rumit, seperti yang ditunjukkan oleh kesukaran yang dihadapi dalam mendapatkan semula semua pengguna Identiti dengan peranan mereka yang berkaitan.
Seperti yang diterangkan dalam konteks yang disediakan, ralat berlaku apabila cuba mengakses sifat Peranan setiap IdentityUser. Ralat ini disebabkan oleh perubahan pada entiti IdentityUser dalam .NET Core. Dalam versi terdahulu, IdentityUser pernah mempunyai sifat Peranan, tetapi ini tidak lagi berlaku.
Untuk mengatasi isu ini, seseorang mesti mencipta entiti tersuai untuk mewakili peranan pengguna perhubungan.
Pengguna Aplikasi:
public class ApplicationUser : IdentityUser { public ICollection<ApplicationUserRole> UserRoles { get; set; } }
Aplikasi Peranan Pengguna:
public class ApplicationUserRole : IdentityUserRole<string> { public virtual ApplicationUser User { get; set; } public virtual ApplicationRole Role { get; set; } }
Peranan Aplikasi:
public class ApplicationRole : IdentityRole { public ICollection<ApplicationUserRole> UserRoles { get; set; } }
DbContext Kemas kini:
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(); }); } }
Pengubahsuaian Permulaan:
services.AddIdentity<ApplicationUser, ApplicationRole>(options => options.Stores.MaxLengthForKeys = 128) .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders();
Pendapatan Data:
Bersemangat memuatkan peranan dan peranan pengguna:
this.Users = userManager.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).ToList();
Dengan melaksanakan entiti tersuai ini dan mengemas kini konteks pangkalan data, anda boleh mendapatkan semula semua pengguna dan peranan mereka yang berkaitan dalam Identiti .NET Core 2.1.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Semua Pengguna dan Peranan Berkaitan Mereka dengan Cekap dalam Identiti .NET Core 2.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!