Подзапрос в LINQ to Entities - PullRequest
       3

Подзапрос в LINQ to Entities

0 голосов
/ 04 марта 2012

У меня есть рабочий запрос в LINQ to SQL. Мне нужно преобразовать его в LINQ to Entities.

(from pr in Products
join c in Categories on pr.CategoryID equals c.CategoryID
join b in Colors on pr.ColorID equals b.ColorID
select new{
ProductID = pr.ProductID,
Manufacturer = pr.Manufacturer.Name,
Model = v.Model.ModelName,
Category = c.Name,
Photos = from p in Photos where pr.ProductID == p.ProductID select p
}).FirstOrDefault()

Когда я использую его как есть, я получаю сообщение об ошибке:

Невозможно создать постоянное значение типа Только примитивные типы ('такие в этом контексте поддерживаются Int32, String и Guid ').

Проблема в этой части:

Photos = from p in Photos where pr.ProductID == p.ProductID select p

Ответы [ 2 ]

1 голос
/ 05 марта 2012

LINQ to Entities автоматически управляет связанными запросами для вас (при условии, что все ваши ключи / отношения определены правильно).

Попробуйте это:

(from pr in Products
select new{
ProductID = pr.ProductID,
Manufacturer = pr.Manufacturer.Name,
Model = pr.Color.Model.ModelName,
Category = pr.Category.Name,
Photos = pr.Photos
}).FirstOrDefault()

Также см. Эту статью (http://msdn.microsoft.com/en-us/library/bb896321.aspx)

0 голосов
/ 06 марта 2012

Я, наконец, решил это очень просто - я разделил этот запрос на 2 метода:

GetAllProducts()
GetAllPhotos()

и затем присоединился к результату через ProductsDTO, у которого есть все свойства обоих запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...