【发布时间】:2012-10-21 19:01:57
【问题描述】:
我有两个表:所有者和客户,它们具有一对多的关联。试图微调我的实体学习,我遇到了障碍。一整天,没有任何运气,我尝试通过这两条相似的代码行返回不同的值进行推理:
仅用于测试目的,我正在尝试计算每位所有者的客户总数。 Owners 实体有一个返回 Client 对象集合的 Clients 导航。我希望结果包括 Owners 实体,这将包括 Clients 实体。
我想知道为什么这三种返回客户总数的方式不同。第一个和第二个返回零个客户端,第三个返回正确的客户端总数。
返回零客户:
Owner owner = context.Owners.First(o => o.ownerID == 5);
var clients = owner.Clients.Count();
-
Owner owner = context.Owners.Where(o => o.ownerID == 5).FirstOrDefault();
var clients = owner.Clients.Count();
返回正确的计数
var clients = context.Owners.Where(o => o.ownerID == 5).Select(o => o.Clients.Count()).FirstOrDefault();
我希望找到一个解释为什么事情如此不同。
谢谢
【问题讨论】:
-
是否启用了延迟加载?似乎它可能不是。在这种情况下,您可能希望使用 .Include 来急切地加载实体。
标签: c#-4.0 entity-framework-4 lambda entity