【问题标题】:Subquery in LINQ to EntitiesLINQ to Entities 中的子查询
【发布时间】:2012-03-04 17:07:42
【问题描述】:

我在 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

【问题讨论】:

    标签: linq-to-entities


    【解决方案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)

    【讨论】:

      【解决方案2】:

      我终于以一种非常简单的方式解决了这个问题——我将该查询分为两种方法:

      GetAllProducts()
      GetAllPhotos()
      

      然后通过具有两个查询的所有属性的 ProductsDTO 加入结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多