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

时间:2011-05-28 21:51:30

标签: database entity-framework-4 mapping

我是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

因此,在我的实体中,我希望拥有一个角色权利,一个包含角色集合的用户实体和一个包含用户集合和角色集合的组实体。

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

所以我的问题: 在上面的例子中。当我加载第1组时,如何实现这一点,我希望看到具有角色的用户A a,b,c和NOT角色d,e,f。

谢谢, JR

1 个答案:

答案 0 :(得分:1)

您需要调用类似Group.User.Roles的内容来获取用户在组中所属的所有角色。类似的东西:

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

这对你有帮助吗?