通过 WCF 数据服务从客户端查询子实体时,.All()
查询返回没有子实体的基本实体。例如,想象一个只有两个客户的数据库。订单是具有 BuyerName 列的子实体。一个客户记录有来自两个不同买家的两个订单,而另一个客户没有订单。
以下查询不会返回有两个订单的客户,因为他们是两个不同的买家(这是预期的)但它确实返回了没有任何订单的客户!
query.Where(c => c.Orders.All(
o => o.BuyerName == buyer.Name));
通过添加一个额外的.Any()
查询,我得到了我认为.All()
查询会自动为我完成的事情。
query.Where(c => c.Orders.All(
o => o.BuyerName == buyer.Name)
&& c.Orders.Any());
这似乎违反了最小意外原则。我认为调用.All()
将要求在不存在子实体时不返回基本实体。.All()
那么,当没有子实体存在时,为什么在 WCF 数据服务客户端返回基本实体?