Есть такой набор таблиц в известном фрэймворке
from u in AspNetUsers
from r in AspNetRoles
from ur in AspNetUserRoles
where r.Id == ur.RoleId && u.Id == ur.UserId
select new {
Email = u.Email,
EmailConfirmed = u.EmailConfirmed,
Roles = ????
}
Как вытащить список ролей пользователя, чтобы user остался один, а роли списком или строкой?
Здравствуйте, vaa, Вы писали:
vaa>Есть такой набор таблиц в известном фрэймворке
vaa>vaa> from u in AspNetUsers
vaa>from r in AspNetRoles
vaa>from ur in AspNetUserRoles
vaa>where r.Id == ur.RoleId && u.Id == ur.UserId
vaa>select new {
vaa>Email = u.Email,
vaa>EmailConfirmed = u.EmailConfirmed,
vaa>Roles = ????
vaa>}
vaa>
vaa>Как вытащить список ролей пользователя, чтобы user остался один, а роли списком или строкой?
Я бы сделал 2 запроса не мучился. Ну или Union использовал.
Здравствуйте, vaa, Вы писали:
vaa>Есть такой набор таблиц в известном фрэймворке
vaa>vaa> from u in AspNetUsers
vaa>from r in AspNetRoles
vaa>from ur in AspNetUserRoles
vaa>where r.Id == ur.RoleId && u.Id == ur.UserId
vaa>select new {
vaa>Email = u.Email,
vaa>EmailConfirmed = u.EmailConfirmed,
vaa>Roles = ????
vaa>}
vaa>
vaa>Как вытащить список ролей пользователя, чтобы user остался один, а роли списком или строкой?
Ну Roles ты просто можешь вытащть без объединения. В свое время писал примеры
https://infostart.ru/1c/articles/402433/
Roles=AspNetUserRoles.Where(ur => r.Id == ur.RoleId)
Здравствуйте, Serginio1, Вы писали:
vaa>>Как вытащить список ролей пользователя, чтобы user остался один, а роли списком или строкой?
S>Ну Roles ты просто можешь вытащть без объединения. В свое время писал примеры https://infostart.ru/1c/articles/402433/
S>S>Roles=AspNetUserRoles.Where(ur => r.Id == ur.RoleId)
S>
Получилось так:
var users = from u in db.Users
select new UserInfo
{
Email = u.Email,
EmailConfirmed = u.EmailConfirmed,
Roles = (from ur in db.UserRoles
from r in db.Roles
where ur.UserId == u.Id && r.Id == ur.RoleId
select r.Name).ToList()
};
но из базы все равно строк по кол-ву ролей. мне важно было, чтобы объект создался один, но все же...(надо будет еще вашу статью почитать)
SELECT [a].[Email], [a].[EmailConfirmed], [a].[Id], [t].[Name], [t].[UserId], [t].[RoleId], [t].[Id]
FROM [AspNetUsers] AS [a]
LEFT JOIN (
SELECT [a1].[Name], [a0].[UserId], [a0].[RoleId], [a1].[Id]
FROM [AspNetUserRoles] AS [a0]
CROSS JOIN [AspNetRoles] AS [a1]
WHERE [a1].[Id] = [a0].[RoleId]
) AS [t] ON [a].[Id] = [t].[UserId]
ORDER BY [a].[Id], [t].[UserId], [t].[RoleId]
Здравствуйте, vaa, Вы писали:
https://infostart.ru/1c/articles/402038/
Как организована иерархия таблиц в 1С версии 8.3