Я использую Entity Framework 4.1 с ASP.NET MVC 3. У меня есть две таблицы с отношением «один ко многим», скажем, Магазин и ShopVisit , и яхочу показать список магазинов с количеством посещений .Довольно просто сделать как запрос 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
?
Даже если я делаю Select следующим образом:
_db.Shops.Include("Visits").Select(s => ShopStats { Shop = s, Vists = s.Vists.Count}).ToList();
Он все еще настаивает на выполнении LEFT OUTER JOIN, который загружаетвсе посещения.