Я реализовал идентификатор asp.net в своем проекте. У меня есть 3 таблицы (пользователи, роли, роли пользователя). Я хочу получить список пользователей, даже если они не назначены ни одной роли, но в основном я хочу создать левое соединение между пользователем и ролями. вот мои таблицы БД
Пользователи
public class User:IdentityUser<string>
{
public string Name { get; set; }
public ICollection<UserRoles> UserRoles { get; set; }
}
Роли
public class Roles:IdentityRole<string>
{
public ICollection<UserRoles> UserRoles { get; set; }
public Roles():base(){}
public Roles(string roleName) : base(roleName){}
}
Роли пользователей
public class UserRoles:IdentityUserRole<string>
{
public User User { get; set; }
public Roles Role { get; set; }
}
Я хочу получить таблицу со столбцами UserName, Mail, Name, RoleName
Вам не нужно явное соединение. Все можно получить через свойства навигации:
var query =
from u in context.Users
from ur in u.UserRoles.DefaultIfEmpty()
select new
{
UserName = u.Name,
Mail = u.Mail,
RoleName = ur.Role.Name
}
Вы чересчур ориентированы на SQL, и это омрачает ваши суждения о том, как писать LINQ. Нужные данные находятся в коллекции Users — у объектов либо есть роли пользователей, либо их нет.