【发布时间】:2011-08-09 04:41:20
【问题描述】:
我将 Entity Framework 4.1 与 ASP.NET MVC 3 结合使用。我有两个具有一对多关系的表,比如说 Shop 和 ShopVisit,我想显示 Shops 列表以及 Visits 的计数。作为 SQL 查询很简单,但我如何让 Entity Framework 有效地做到这一点?
这行得通:
_db.Shops.Include("Visits").ToList();
@foreach (var shop in ViewBag.Shops)
{
Visit count: @shop.Visits.Count
}
但是,查看 SQL Profiler,它似乎正在使用 LEFT OUTER JOIN 加载所有访问,这不是我想要的。我只想要计数。当然,我也不希望对每个 Shop 都进行子查询。我该怎么做才能让它执行COUNT(*) ... GROUP BY 查询?
即使我这样选择:
_db.Shops.Include("Visits").Select(s => ShopStats { Shop = s, Vists = s.Vists.Count}).ToList();
它仍然坚持执行 LEFT OUTER JOIN,它会加载所有访问。
【问题讨论】:
标签: linq-to-entities group-by entity-framework-4.1