我有两个表:所有者和客户,它们具有一对多的关联。在尝试微调我的实体学习时,我遇到了一个障碍。一整天,没有任何幸运,我试图通过这两行相似的代码返回不同的值来进行推理:
仅出于测试目的,我正在尝试计算每个所有者的客户总数。Owners实体具有返回客户端对象集合的客户端导航。我希望结果包括所有者实体,这将包括客户实体。
我想知道为什么这三种返回客户端总数的方式是不同的。第一个和第二个返回零个客户端,第三个返回正确的客户端总数。
返回零个客户端:
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();我希望能找到一个解释,为什么事情会如此不同。
谢谢
发布于 2012-10-21 19:01:57
正如Pawel所说,这一定与延迟加载有关。没有,也就是说。我假设您的Owner类创建了自己的Clients集合(我想是在它的构造函数中),否则它将为空。
现在,如果您将Clients集合定义为虚拟的(假设您的工作是代码优先的),当您寻址owner.Clients.Count()时,EF将能够延迟加载它。
https://stackoverflow.com/questions/12946105
复制相似问题