即使仅迭代集合中的第一项,延迟加载也会加载整个集合吗?还是仅加载集合中迭代的项目?
...或者我不知道我在说什么?
请您参考如下方法:
当您开始遍历集合时,延迟加载会加载整个集合。示例:假设user 1具有角色“ Role1”,“ Role2”,“ Role3”(user.Roles为virtual):
var user = context.Users.Single(u => u.Id == 1);
foreach (var role in user.Roles) // DB query happens here once
{
Console.WriteLine(role.Name);
if (role.Name == "Role1")
break;
}
尽管您从不访问
Role2和
Role3,但它们仍已加载。
