У меня немного болит голова, когда я решаю эту проблему.
Итак, вот оно:
Допустим, у меня есть 3 таблицы:
Я хочу получить список клиентов и их заказов с некоторой фильтрацией по полям некоторых клиентов и заказов и вернуть график, который показывает только основную информацию о каждой сущности.
Например, у Клиента может быть 19 полей, но я хочу только прочитать его ID, FirstName, LastName и из заказов, я хочу только прочитать NetPrice и идентификаторы связанных продуктов так, чтобы при выполнении итерации запроса генерируемый SQL очень легкий и будет выбирать только эти конкретные поля.
Это то, что может быть достигнуто? Если так, то как? Я очень озадачен тем, как это сделать.
Большое спасибо.
EDIT:
Ладно, мне удалось это сделать, и парень, теперь быстро!
Вот как я это сделал:
var customers = (from customer in Context.Cutomers
select new
{
customer.ID,
customer.FirstName,
customer.LastName,
Orders = customer.Orders.Select(order => new
{
order.ID,
order.NetPrice,
Products = order.Products.Select(product => new
{
product.ID
}
}
})
.AsEnumerable()
.Select(c => new Customer
{
c.ID,
//In my case, this is VERY important as it will
//try to convert from IEnumerable<T> to ICollection<T>
//which seems to need to be explicit.
Orders = c.Orders as ICollection<Order>
})
.ToList();
РЕДАКТИРОВАТЬ # 2:
Я был не прав ... Компилируется нормально, все вроде работает, но мои продукты пусты ...
Я снова в тупике ...