我在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
答案 0 :(得分:1)
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)
答案 1 :(得分:0)
我终于以一种非常简单的方式解决了它 - 我将该查询分为两种方法:
GetAllProducts()
GetAllPhotos()
并通过ProductsDTO加入结果,该结果具有两个查询的所有属性。