Я пытаюсь понять левые внешние соединения в LINQ to Entity. Например, у меня есть следующие 3 таблицы:
Компания, компанияПродукт, продукт
Компания CompanyProduct связана с двумя родительскими таблицами: компанией и продуктом.
Я хочу вернуть все записи Компании и связанный с ними CompanyProduct, существует ли КомпанияProduct или нет для данного продукта. В Transact SQL я бы перешел из таблицы Company, используя левые внешние соединения следующим образом:
SELECT * FROM Company AS C
LEFT OUTER JOIN CompanyProduct AS CP ON C.CompanyID=CP.CompanyID
LEFT OUTER JOIN Product AS P ON CP.ProductID=P.ProductID
WHERE P.ProductID = 14 OR P.ProductID IS NULL
Моя база данных состоит из 3 компаний и 2 записей CompanyProduct, связанных с ProductID из 14. Таким образом, результаты SQL-запроса представляют собой ожидаемые 3 строки, 2 из которых связаны с CompanyProduct и продуктом и 1, который просто имеет компанию таблицы и нулей в таблицах CompanyProduct и Product.
Итак, как вы пишете тот же тип соединения в LINQ to Entity, чтобы получить аналогичный результат?
Я пробовал несколько разных вещей, но не могу правильно получить синтаксис.
Спасибо.