2012-03-04 112 views
0

我在LINQ to SQL中有一个工作查询。我需要将它转换为LINQ to Entities。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() 

当我使用它,因为它是我得到一个错误:

Unable to create a constant value of type Only primitive types ('such as Int32, String, and Guid') are supported in this context.

的问题是在这个部分:

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

回答

0

我终于解开了它在很简单的方法 - 我分在查询到2种方法:

GetAllProducts() 
GetAllPhotos() 

,比加入通过ProductsDTO具有来自两个查询的所有属性的结果。

1

LINQ到实体自动管理的相关查询您(假设您的所有密钥/关系都已正确定义)。

试试这个:

(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)