接收不正确的实体结果



我有两个表格:所有者和客户,它们具有1-许多关联。试图微调我的实体学习,我遇到了一个障碍。整天,我没有运气,我尝试将这两条类似的代码行归还不同的值:

仅测试目的,我每个所有者都试图给总客户端。所有者实体具有客户导航返回客户端对象集合的客户。我想让结果包括所有者实体,其中包括客户实体。

我想知道为什么这三种方式返回客户总数不同。第一和第二返回零客户端和第三返回正确的客户端总数。

返回零客户端:

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();

我希望找到一个解释,为什么事情如此不同。

谢谢

正如Pawel所说,这必须与懒惰加载有关。缺乏,也就是说。我认为您的Owner类创建了自己的Clients集合(我认为在其构造函数中),否则将是null。

现在,如果将Clients集合定义为虚拟(假设您的工作代码 - 首先),则EF将能够在地址owner.Clients.Count()

最新更新