Assignment と User の間に多対多の関係があります
割り当てからユーザーを削除しようとすると、すべてのユーザーがコレクションに読み込まれます。
どうすればそれを回避できますか?
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)
最初は割り当てマッピングに Set ではなく Bag を使用していましたが、更新時に AssignmentsToUsers テーブルの多くの行を削除してから再挿入していました。そこで、セットを使うことにしました。
しかし、Set を使用すると問題が発生します。すべてのデータがメモリに取り込まれます。
これを行うための推奨される方法は何ですか?