У меня есть отношение «многие ко многим» между пользователями и группами, и у меня есть таблица, которая может содержать разрешение для группы.Таким образом, сущности выглядят примерно так:
public class Group
{
public int Id { get; set; }
public virtual ICollection Users { get; set; }
}
public class User
{
public int Id { get; set; }
public virtual ICollection Groups { get; set; }
}
public class Permission
{
public int Id { get; set; }
public virtual Group { get; set; }
public int Value { get; set; }
}
Мне интересно, как мне узнать разрешения, применимые к пользователю (где применимы те, которые относятся к любым группам, к которым принадлежит пользователь).
В базе данных будет таблица сопоставления, называемая UserGroups.Если бы у меня был доступ к этому, запрос LINQ выглядел бы примерно так:
var permissions =
from p in MyContext.Permissions
join m in this.DbContext.UserGroups on p.GroupId equals m.GroupId
where m.UserId.Equals(theUserId)
select g;
Однако (см. мой связанный вопрос ), поскольку у меня нет доступа к таблице сопоставления,Я не уверен, что лучший способ найти соответствующие разрешения.Как лучше всего это сделать?
Спасибо за помощь, Эрик