我在分配和用户之间有一个多对多的关系
尝试从作业中删除用户时,我看到所有用户都已加载到集合中。
我该如何避免呢?
public class User
{
public virtual int Id { get; private set; }
public virtual IList<Assignment> Assignments { get; set; }
}
public class Assignment
{
public virtual int Id { get; private set; }
public virtual ICollection<User> Users { get; set; }
}
映射:
HasManyToMany(user => user.Assignments).Table("UserToAssignment").ParentKeyColumn("UserId").ChildKeyColumn("AssignmentId").Inverse().ExtraLazyLoad();
HasManyToMany(productAssignment => productAssignment.Users).AsSet().Table("UserToAssignment").ParentKeyColumn("AssignmentId").ChildKeyColumn("UserId").LazyLoad();
调用代码:
assignment.Users.Remove(user)
最初我使用 Bag 而不是 Set 进行分配映射,但是在更新它时,它正在删除然后重新插入 AssignmentsToUsers 表中的很多行。所以我改用Set。
但是现在我看到了使用 Set 的一个问题:它将所有数据都带入内存。
推荐的方法是什么?