razor - ASP .NET Core 2.1 标识:UserRoles 为空
问题描述
在我的 Razor Web 应用程序中,我尝试通过以下方式获取用户及其角色的列表:
_userManager.GetUsersInRoleAsync(role).Result;
_dbContext.Users.Include(u => u.UserRoles).ThenInclude(u => u.Role);
_userManager.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).ToList();
并且 UserRoles 始终为空。知道我做错了什么吗?
这是我的启动:
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddDefaultUI()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<ApplicationDbContext>();
这是我的模型:
public class ApplicationUser : IdentityUser
{
public virtual ICollection<ApplicationUserRole> UserRoles { get; set; }
}
public class ApplicationRole : IdentityRole
{
public virtual ICollection<ApplicationUserRole> UserRoles { get; set; }
}
public class ApplicationUserRole : IdentityUserRole<string>
{
public virtual ApplicationUser User { get; set; }
public virtual ApplicationRole Role { get; set; }
}
这是我的 OnModelCreating:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<ApplicationUser>(au =>
{
au.HasMany(e => e.UserRoles).WithOne(e => e.User).HasForeignKey(ur => ur.UserId).IsRequired();
});
builder.Entity<ApplicationRole>(ar =>
{
ar.HasMany(e => e.UserRoles).WithOne(e => e.Role).HasForeignKey(ur => ur.RoleId).IsRequired();
});
builder.Entity<ApplicationUserRole>(aur =>
{
aur.HasOne(ur => ur.Role).WithMany(r => r.UserRoles).HasForeignKey(ur => ur.RoleId).IsRequired();
aur.HasOne(ur => ur.User).WithMany(r => r.UserRoles).HasForeignKey(ur => ur.UserId).IsRequired();
});
}
解决方案
推荐阅读
- ibm-mq - 在向 mq 发送消息之前需要删除 rfh 标头
- java - Visual Studio Code:Java 不会执行,除非 package 语句被注释掉
- javascript - 如何递归地改变元素的颜色
- c - 如何简化以下 C 代码?
- docker - 在 docker 容器中使用 node、npm 和 vuejs 进行开发?
- python - 为 IIS 配置 python
- filesystems - 我们可以在事务损坏后重放 jdb2 事务吗
- asp.net - 服务器响应为:5.7.57 SMTP - Office 365
- sql - 如何计算 SQL 中的平均唯一行?
- python - 从字符串或缓冲区加载 LightGBM 模型