我有两个班级:
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。或者是否可以通过级联删除自动生成?我对这两种解决方案感兴趣。
答案 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();
}