2011-05-28 205 views
1

我是實體框架和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

回答

1

您需要調用類似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