0

在数据库中,我有 3 个表,用户、组和一个查找表 UserGroup,其中包含 UserID 和 GroupId。

我创建了一个 model.edmx,这允许我: var users = context.User var groups = context.Group 但不为 context.UserGroup 创建对象。

获取组中的所有用户以及用户所属的所有组的语法是什么?

var results = from groups in db.Groups.Where(t => t.Users(u => u.UserID ==1))
select groups;
4

2 回答 2

1

如果您设置了正确的键,EF 将隐藏您的联结表,并创建一个导航属性以在表之间建立连接

获取用户所属的所有组:

var groupResults = db.Groups.Where(g => g.Users.Select(u => g.UserId).Contains(userId));

并获得所有用户:

var userResults = db.Users.Where(u => u.Groups.Select(g => g.GroupId).Contains(groupId));
于 2012-10-19T12:31:42.553 回答
0

不会创建联结表。您将获得两个导航集合属性。用户实体中的组和组实体中的用户。

获取组中的所有用户:

var usersInGroup = context.Groups.Where(g => g.ID == groupId).SelectMany(g => g.Users);

要获取用户所属的所有组:

var groupsOfUser = context.Users.Where(u => u.ID == userId).SelectMany(u => u.Groups);
于 2012-10-19T14:08:01.600 回答