Как объединить таблицы со многими отношениями - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь соединить таблицы, чтобы заполнить модель представления, которая выглядит следующим образом:

public class UserViewModel
{
    public String Id { get; set; }
    public String UserName { get; set; }
    public String Email { get; set; }
    public String Role { get; set; }
}

Мой атм запроса выглядит так, но, очевидно, он не работает, но может помочь в описании проблемы.

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, поскольку они связаны друг с другом с помощью таблицы с несколькими именами

Проблема: запрос не работает и ничего не дает в результате Прежде чем я присоединился к роли в viewModel, я получил данные для представления, теперь я вообще ничего не получаю.

Мой вопрос: как правильно это сделать? Для удобной навигации по данным

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Когда я сделал это так, это сработало ...

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 *** ..

0 голосов
/ 11 сентября 2018

Вам нужен третий объект, чтобы связать их вместе.В терминах базы данных это называется соединительной таблицей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...