У меня есть запрос ссылки с простым соединением к нескольким таблицам и предложением where, по какой-то нечетной причине запрос, похоже, не подчиняется предложению where.Запрос LINQ - соединение и где условие не соблюдается?
Мой запрос, как показано ниже:
from p in Platforms
join c in Compartments on p.Id equals c.PlatformId
join ci in CompartmentItems on c.Id equals ci.CompartmentId
where p.Id == 4042 && !ci.Archived && !c.Archived
select c
И простой LINQPad screnshot показывает, что CompartmentItems
возвращаются прикреплены к Compartments
, но независимо от того, являются ли они архивируются или нет.
Он чувствует, как я быть плотными здесь, кто может мне помочь определить проблему с запросом?
Любые мысли очень ценятся.
EDIT: Итак, я вернулся и более подробно рассмотрел это и установил, почему я только вернул отсеки. Это связано с репозиторием, который только типично возвращает типы доменов для потребления. В результате я не могу вернуть более одного типа сущности без введения одного случайного объекта типа DTO (ни один из других репозиториев не возвращает ничего, кроме доменных типов).
Так с этим в виду, у меня есть 4 варианта:
- Создать случайный DTO только для этой одной цели
- запросов БД дважды и получить детали отсека в качестве второго запроса
- возвращающих IQueryable из репозитория (опять же, это не делается нигде)
- Возвращайте отсеки независимо от архивных отсеков и отфильтровывайте их в режиме потребления в памяти.
Любые мысли о наилучшем подходе здесь?
Ваша последняя строка 'выбрать c'. Так вот что делает запрос. – JeremiahDotNet