1. ホーム
  2. c#

[解決済み] LINQ to Entities クエリでエンティティを構築できません。

2022-02-13 20:03:38

質問

というエンティティタイプがあります。 Product は、エンティティフレームワークによって生成されます。 次のクエリを作成しました。

public IQueryable<Product> GetProducts(int categoryID)
{
    return from p in db.Products
           where p.CategoryID== categoryID
           select new Product { Name = p.Name};
}

以下のコードでは、次のようなエラーが発生します。

エンティティまたは複合型のShop.Productは LINQ to Entitiesクエリ"。

var products = productRepository.GetProducts(1).Tolist();

しかし select p の代わりに select new Product { Name = p.Name}; とすると、正しく動作します。

カスタムセレクトセクションをプリフォームするには?

どのように解決するのですか?

マッピングされたエンティティに投影することはできません(できないはずです)。しかし、無名型や、(1)(2)(3)(4)(5)に投影することは可能です。 DTO :

public class ProductDTO
{
    public string Name { get; set; }
    // Other field you may need from the Product entity
}

そして、あなたのメソッドは、DTOのリストを返します。

public List<ProductDTO> GetProducts(int categoryID)
{
    return (from p in db.Products
            where p.CategoryID == categoryID
            select new ProductDTO { Name = p.Name }).ToList();
}