无法在 LINQ to Entities 查询中构造实体或复杂类型 'Ws.Models.XXXX'

The entity or complex type 'Ws.Models.XXXX' cannot be constructed in a LINQ to Entities query

我正在处理我的 MVC4 WEBAPI 项目。我所做的只是使用如下所示的 DTO(samplemodelDTO) 生成 Web 服务。

namespace Ws.Models
{
    public class samplemodelDTO
    {
        [Key]
        public int id { set; get; }

        public string Productname { get; set; }

        public int Productquantity { get; set; }

        public string ProductReview { get; set; }        
    }
}

此 DTO 在控制器中的使用如下,因为它正在从两个表中获取数据。我搜索了很多,也使用了匿名对象,但它仍然抛出相同的内部异常。

我也在这里搜索,但我仍然找不到任何解决方案。任何指导都会受到高度appreciated.Cheers.

public IQueryable<samplemodelDTO> Getproducts()
{
    var query = from t in db.products
                join p in db.ratings on t.product_id equals p.prod_id
                select new samplemodelDTO()
                {
                    Productname = t.product_name,
                    Productquantity = t.quantity,
                    ProductReview = p.rating1
                };

    return query;
}

它抛出的错误是这个

为了安全起见,请尝试下面的方法,使用不同于上下文模型的命名空间。

namespace <NewNamespaceforDTO> //Ws.Models 
{
    public class samplemodelDTO
    {            
        public int id { set; get; }    
        public string Productname { get; set; }  
        public int Productquantity { get; set; }   
        public string ProductReview { get; set; }    
    }
}

public List<samplemodelDTO> Getproducts()
{
     var query = from t in db.products.AsEnumerable()
                 join p in db.ratings.AsEnumerable() on t.product_id equals p.prod_id
                 select new samplemodelDTO()
                 {
                      Productname=t.product_name,
                      Productquantity=t.quantity,
                      ProductReview=p.rating1
                 };
      return query.ToList();
}

可能会有用。