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
マップされたエンティティに投影することはできません(また、そうすべきではありません)。ただし、匿名型または個人情報:
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();
}