Запрос к таблице Linq. ASP.NET/C#

184
11 августа 2018, 13:20

У меня такое задание. В момент регистрации пользователю добавляется роль. На данный момент их 2. Client, Doctor. Вот сервис-метод что добавляет роль. тут для меня все понятно. И что самое интересно через этот сервис роль добавляется в таблицу что мне нужна, но не могу к ней добраться.

    public void AddUserToRole(DtoUser user, string roleName)
    {
        var dbUser = repo.GetQuery<AspNetUsers>().SingleOrDefault(e => e.Id == user.Id);
        if (dbUser == null) return;
        if (dbUser.AspNetRoles.Count == 0 || dbUser.AspNetRoles.Any(el => el.Name != roleName))
        {
            var role = repo.GetQuery<AspNetRoles>().SingleOrDefault(e => e.Name == roleName);
            if (role == null) return;
            dbUser.AspNetRoles.Add(role);
            repo.SaveChanges();
        }
    }

Идем дальше. В базе данных есть отдельная таблица для ролей пользователей. Но в модели она нигде не указана. Таблица эта называется "AspNetUsersRoles" тут по Id хранится роль которая указывается при регистрации(она мне и нужна). Остальные данные пользователя попадают в большую таблицу AspNetUsers, к которой я имею доступ(под доступом я имею ввиду, что она представлена в модели классом но тут нету самих ролей, ведь они ж в другой таблице) Есть еще 3я таблица, список самих ролей "AspNetRoles". Тут просто перечислены роли в базе. И того есть такая диаграмма. На первой картинке связь с таблицей перечисленных ролей, во второй связь с с главной таблицей. Всюду как я понимаю они по Id связаны.

Мне надо написать небольшой сервис или просто запрос Linq что б вытащить их роли по Id. Ведь регистрировать я могу а вот вытащить их для сравнения не получается:) Хелп. Спасибо.

Answer 1

Вам для начала нужно почитать, что такое ASP .Net Identity. Затем нужно четко сформулировать вопрос. Если вам необходимо получить все роли пользователя, то код приблизительно следующий:

await _userManager.GetRoles(user.Id);

Что такое user manager вы поймете, когда изучите ASP .Net Identity.

READ ALSO
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable

192
Как вывести информацию SQL в DataGrid?

Как вывести информацию SQL в DataGrid?

Хотел попробовать написать программу по правилам паттерна MVVMФактически я никогда не работал с ним

179
Что происходит под капотом при создании файлового потока?

Что происходит под капотом при создании файлового потока?

Сейчас читаю вот эту статью Difference between Buffer & Stream in C# и хотел бы для себя сначала уяснить что правильно понимаю, что происходит под капотом...

180
Производительность OpenCL

Производительность OpenCL

Возникла проблема оптимизации алгоритма поиска пути на карте (двухмерный массив), уперся в производительность, которая после 200 элементов...

161