1
votes

I am kind of new to Entity Framework and ORMs. I have a simple database schema that is kind of like this.

User:
   Id
   Name

Group:
   Id
   Name

Role:
   Id
   Name

There are many-many between groups and users. Also, there is many-many between users and roles. However, Roles are per group. So we could have the following:

User A belongs to Group 1 with Roles a,b,c and belongs to Group 2, but has Roles d,e,f.

So we have some association tables like so:

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

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

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

So, in my entities I want to have a Role entitiy, a User entity with a collection of Roles and a Group entity with a collection of Users and a collection of Roles.

When I load a group, I want to only load the users in that group and only that users roles for that group.

So my question: In the above example. How do I make it so when I load Group 1, I want to see User A with Roles a,b,c and NOT Roles d,e,f.

Thanks, JR

1

1 Answers

1
votes

You need to call something like Group.User.Roles to get all Roles the user belongs to in the Group. something like:

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

Does this help you?