Entity Framework 4: Отображение нескольких ассоциативных таблиц в сущности - PullRequest
1 голос
/ 29 мая 2011

Я новичок в Entity Framework и ORM.У меня есть простая схема базы данных, которая выглядит примерно так:

User:
   Id
   Name

Group:
   Id
   Name

Role:
   Id
   Name

Есть много-много между группами и пользователями.Кроме того, есть много-много между пользователями и ролями.Тем не менее, Роли на группу.Таким образом, мы могли бы иметь следующее:

Пользователь A принадлежит к группе 1 с ролями a, b, c и принадлежит к группе 2, но имеет роли d, e, f.

Итак, мы имеемнекоторые таблицы ассоциаций, например, так:

UserRoles:
   UserId -> User.Id
   RoleId -> Role.Id

UserGroups
   UserId -> User.Id
   GroupId -> Group.Id

GroupRoles:
   GroupId -> Group.Id
   RoleId -> Role.Id

Итак, в моих сущностях я хочу иметь право Role, сущность User с коллекцией ролей и сущность Group с коллекцией Users и коллекцией Roles.

Когда я загружаю группу, я хочу загружать только пользователей в этой группе и только роли этих пользователей в этой группе.

Итак, мой вопрос: в приведенном выше примере.Как сделать так, чтобы при загрузке группы 1 я хотел видеть пользователя A с ролями a, b, c и NOT с ролями d, e, f.

Спасибо, JR

1 Ответ

1 голос
/ 03 июня 2011

Вам нужно вызвать что-то вроде Group.User.Roles, чтобы получить все роли, к которым принадлежит пользователь в группе. что-то вроде:

var group1 = objectContext.Groups.Where(x => x.GroupId == 1);
var userARoles = group1.Users.Where(x => x.UserId == "A").Roles;

Вам это помогает?

...