我想要做的是联接表以填充如下所示的viewModel:
public class UserViewModel
{
public String Id { get; set; }
public String UserName { get; set; }
public String Email { get; set; }
public String Role { get; set; }
}
我的查询atm看起来像这样,但是显然不能正常工作,但是可能有助于描述问题。
public IActionResult AddAdmin()
{
var allUsers = (from u in _dbContext.Users
join r in _dbContext.UserRoles on u.Id equals r.UserId
join i in _dbContext.Roles on r.RoleId equals i.Id
select new UserViewModel
{
UserName = u.UserName,
Email = u.Email,
Id = u.Id,
Role = i.Name
}).ToList();
return View(allUsers);
}
如您所见,我很难找到的是将角色应用于viewModel,因为它们通过manyTomany表彼此连接
问题:查询不起作用,并且没有给出任何结果 在将角色加入viewModel之前,我已经将数据输入到视图中,现在什么也没得到。
我的问题:执行此操作的正确方法是什么?轻松浏览数据
答案 0 :(得分:0)
当我这样做时,它起作用了...
public IActionResult AddAdmin()
{
var allUsers = (from u in _dbContext.Users
select new UserViewModel
{
UserName = u.UserName,
Email = u.Email,
Id = u.Id
}).ToList();
foreach (var item in allUsers)
{
var roleId = _dbContext.UserRoles.Where(x => x.UserId == item.Id).FirstOrDefault();
item.Role = _dbContext.Roles.Where(x => x.Id == roleId.RoleId).FirstOrDefault().Name;
}
return View(allUsers);
}
我知道它看起来像s *** ..
答案 1 :(得分:-1)
您需要第三个实体将两者绑定在一起。用数据库术语来说,它称为联结表。