У меня есть решение, в котором я создал объекты самообследования, используя шаблоны RTM. Я разделил сущности и контекст между двумя проектами, чтобы я мог повторно использовать определения типов, поскольку планирую запустить клиент / сервер через WCF.
Один из моих методов обслуживания требуется для возврата графа объектов «Product» с дочерними объектами «ProductSku», которые в свою очередь имеют дочерние объекты «ProductPrice». Критерии выбора будут указаны в свойстве «Имя» объекта «Продукт» и в свойстве «FinancialPeriodID» объекта «ProductPriceObject». Пока я не включаю имя в поиск, но у меня возникают проблемы с возвратом графика.
Если я просто выполню следующий запрос (обратите внимание, этот синтаксис взят из LinqPad, а не из реального кода приложения) ...
from product in Products.Include("Skus.PriceHistory")
select product
... тогда я могу получить полный граф объектов для элементов, которые мне требуются, конечно, на данный момент нет фильтра.
Если вместо этого я введу фильтр следующим образом ...
from product in Products.Include("Skus.PriceHistory")
join sku in ProductSkus on product.ID equals sku.ProductID
join price in ProductPrices on sku.ID equals price.ProductSkuID
where price.FinancialPeriodID == 244
select product
... я ожидаю получить обратно объекты "Product", дочерние объекты "ProductSku" (которые находятся в коллекции "Skus" "Product") и их объекты "ProductPrice" (которые в коллекции «PriceHistory» («ProductSku») - но я получаю только объекты «Product», коллекция «Skus» пуста.
Я также пытался кодировать запрос как ...
from product in Products.Include("Skus.PriceHistory")
from sku in product.Skus
from price in sku.PriceHistory
where price.FinancialPeriodID == 244
select product
... но это тоже не имеет значения.
Очевидно, я должен что-то делать не так. Кто-нибудь может пролить свет на то, что это за нечто такое, как я уже несколько часов ходил кругами!