Я пытаюсь понять левые внешние соединения в LINQ to Entity. Например, у меня есть следующие 3 таблицы:Linq to Entity с несколькими левыми внешними соединениями
Company, CompanyProduct, продукт
CompanyProduct связан с его двумя родительскими таблицами, компании и продукта.
Я хочу вернуть все записи Компании и связанный с ними CompanyProduct независимо от того, существует ли КомпанияProduct или нет для данного продукта. В Transact SQL я бы из таблицы компании, используя левый внешнее соединение следующим образом:
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 записи assocaited с ProductID из 14. Таким образом, результаты запроса SQL являются ожидаемые 3 строки, 2 из которых связаны с CompanyProduct и продуктом и 1, который просто имеет таблицу компании и нули в таблицах CompanyProduct и Product.
Итак, как вы пишете одно и то же соединение в LINQ to Entity, чтобы получить аналогичный результат?
Я пробовал несколько разных вещей, но не могу получить синтаксис правильно.
Спасибо.
`. Выбрать (e => e)` is no-op и может быть удален. Конечно, если вы используете только идентификатор, почему бы не сказать `.Select (e => e.id)`? – StriplingWarrior 2010-11-04 15:32:17