多对多关系-获得所有对象链接到另一个
本文关键字:对象 链接 另一个 关系 | 更新日期: 2023-09-27 18:15:53
我有两个类:
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后,删除所有链接(用户/组)到该组。或者是否可以通过级联删除自动删除?我对这两个解决方案很感兴趣。
您可以使用下面的示例代码从Group
中选择Users
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();
}