多对多关系 - 获取与其他对象链接的所有对象

时间:2015-10-02 10:18:57

标签: c# telerik-open-access

我有两个班级:

public class User
{
    public User()
    {
        this.Groups = new List<Group>();
    }

    public long Id { get; set; }
    public string Name { get; set; }

    public IList<Group> Groups { get; set; }
}

public class Group
{
    public Group()
    {
        this.Users = new List<User>();
    }

    public long Id { get; set; }
    public string Name { get; set; }

    public IList<User> Users { get; set; }
}

我通过使用连接表定义了与OpenAccess的多对多关系:

mapping.HasAssociation(user => user.Groups).WithOpposite(group => group.Users).MapJoinTable("UserGroup", (user, group) => new
            {
                UserId = user.Id,
                GroupId = group.Id
            });

我想获得与x组相关联的所有用户。

如何编写linq请求?

我最终想要在删除所有链接(用户/组)后删除组x。或者是否可以通过级联删除自动生成?我对这两种解决方案感兴趣。

1 个答案:

答案 0 :(得分:0)

您可以使用下面的示例代码

Users中选择Group
var allUserInGroup = Group.Where(group => group.Id == id).Select(group => group.Users).ToList();

删除部分:

if(!group.Any(g => g.Users))  {  // assume group is IQueryable/IEnumerable
   context.Group.Remove(group);
   context.SaveChanges();
}