我想在我的视图中显示三列:
[[ 2.23903250e-08 -1.29444679e-07j]]
[[ 6.09565057e-07 +2.09702260e-07j]]
[[ 3.40257465e-07 -1.20382176e-07j]]
所以最初我的想法是
我可以======================================
UserName | Email | Role Name
======================================
codelover12 code@g.g Student
kimmy45634 kimy@c.c Teacher
======================================
在Id
表格中AspNetUsers
加入UserId
表格中的AspNetUserRoles
,也可以加入Id
AspNetRoles
中的var model = from users in db.Users
join userRoles in db.AspNetUserRoles on users.Id equals roles.UserId
join role in db.Roles on role.Id equals userRoles.RoleId
select new { users.UserName, users.Email, role.Name };
谁具有哪个角色。
我是这样想的:
{{1}}
但我发现我无法访问AspNetUserRoles。 我很感激你的帮助。
答案 0 :(得分:1)
好吧,我明白了。
最简单的方法是将这行代码添加到IdentityModels.cs
public DbSet<IdentityUserRole> UserRoles { get; set; }
然后你现在可以访问AspNetUserRoles,并编写像
这样的代码var findRole = (from userRole in db.UserRoles
join role in db.Roles on
userRole.RoleId equals role.Id
where userRole.UserId == Id
select role.Name).ToList();
希望这可以帮助其他有类似问题的人。
答案 1 :(得分:0)
EF自动创建交叉表AspNetUserRoles。所以,你可以使用导航属性或像这样做:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<AspNetUser>()
.HasMany(x => x.Roles)
.WithMany(x => x.AspNetUsers)
.Map(x =>
{
x.ToTable("AspNetUserRoles"); // third table is named Cookbooks
x.MapLeftKey("AspNetUserId");
x.MapRightKey("RoleId");
});
}