从虚拟集合中删除/添加内存使用情况

本文关键字:内存 用情 情况 添加 虚拟 集合 删除 | 更新日期: 2023-09-27 17:49:28

根据我在分析sql时所知,当它调用group.Users.Remove(user)时,它会执行一条sql语句来检索组的所有用户。用户是组上的一个虚拟集合,首先使用EntityFramework6代码。

var usersToRemove = Context.users.Where(u=>someListOfIds.Contains(u.Id)); //might only be a few users
foreach(var group in Context.groups)
{
    foreach(var user in usersToRemove.Where(u=>u.groupId == group.Id)){
        group.Users.Remove(user);//group.Users might have millions of users, do all users get pulled back into memory at this point?
    }
}

我的问题是,当从这里的集合group.Users.Remove(user)中删除和项目时,所有的组Users都会加载到内存中吗?

从虚拟集合中删除/添加内存使用情况

做所有的用户。从集合here用户中删除和项时,组将加载到内存中。组。是否删除(组(?

是的,我认为调用group.Users会加载所有用户。调用context.Users(或context.Groups(将返回IQueryable(因为UsersGroupsDbSets(,而groups.Users可能是ICollection<User>。因此(假设您启用了延迟加载等(,当您访问它时,它将被填充。