从虚拟集合中删除/添加内存使用情况
本文关键字:内存 用情 情况 添加 虚拟 集合 删除 | 更新日期: 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
(因为Users
和Groups
是DbSets
(,而groups.Users
可能是ICollection<User>
。因此(假设您启用了延迟加载等(,当您访问它时,它将被填充。