实体框架4:将几个关联表映射到实体

问题描述:

我是实体框架和ORM的新手。我有一个简单的数据库模式,就像这样。实体框架4:将几个关联表映射到实体

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 

所以,在我的实体我想有一个角色entitiy,与角色的集合,并与用户的集合组实体用户实体和一组角色。

当我加载一个组时,我只想加载该组中的用户,并且只加载该组的用户角色。

所以我的问题: 在上面的例子。我如何做到这一点,当我加载组1,我想看到用户A角色a,b,c和非角色d,e,f。

感谢, JR

您需要调用类似Group.User.Roles获取用户所属的组中的所有角色。例如:

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

这对您有帮助吗?

+0

将测试并让你知道。谢谢。 – 2011-06-05 18:28:46

+0

这会返回userA的所有角色,而不管它们属于哪个组。我必须将userA的角色与group1的角色相交以获得我想要的集合。谢谢。 – 2011-06-17 16:31:12