在数据库中,我有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;
答案 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);