Я только изучаю LINQ to SQL и натолкнулся на следующее препятствие.
У меня есть следующие 3 таблицы:
- PC (PCGUID, ParentPCGUID, ModelName, RetailerGUID)
- Предложение (OfferGUID, ParentGUID, Название)
- Розничный продавец (RetailerGUID, Имя)
При следующих отношениях:
- ПК 1: N Предложение
- Розничный продавец 1: N ПК
- Розничный продавец 1: N Предложение
- ПК 1: N ПК (самоссылка)
Мне нужно получить записи с ПК только с 1 записью с ПК. Предложение (с конкретными предложениями where) и только 1 запись с ПК.Retailer.Offer (с конкретными предложениями where) и, надеюсь, только с одним нажатием набаза данных.
У меня есть следующий запрос (я пробовал около ста), но он попалДБ несколько раз.
var q = from pc in PCs
where pc.PCGUID == guid || pc.ParentPCGUID == guid
select new {
PC = pc,
PCOffers = pc.Offers.FirstOrDefault(),
RetailOffers = pc.Retailer.Offers.FirstOrDefault()
};
Если я приведу только одно свойство таблицы предложений, например, так:
var q = from pc in PCs
where pc.PCGUID == guid || pc.ParentPCGUID == guid
select new {
PC = pc,
PCOffers = pc.Offers.FirstOrDefault().Title,
RetailOffers = pc.Retailer.Offers.FirstOrDefault().Title
};
Он работает просто отлично и только один раз попадает в БД, но мне нужновесь объект предложения.Любая помощь будет принята с благодарностью.
Спасибо