Skip to main content
 首页 » 编程设计

c#之延迟加载是否在迭代时加载整个集合

2024年01月18日28www_RR

即使仅迭代集合中的第一项,延迟加载也会加载整个集合吗?还是仅加载集合中迭代的项目?

...或者我不知道我在说什么?

请您参考如下方法:

当您开始遍历集合时,延迟加载会加载整个集合。示例:假设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,但它们仍已加载。