实体框架model.edmx和许多关系

时间:2012-10-19 12:28:28

标签: linq entity-framework linq-to-entities

在数据库中,我有3个表,User,Group和一个包含UserID和GroupId的查找表UserGroup。

我创建了一个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;

2 个答案:

答案 0 :(得分: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));

答案 1 :(得分: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);