gpt4 book ai didi

c# - 无法在 LINQ to Entities 查询中构造实体

转载 作者:IT王子 更新时间:2023-10-29 03:27:53 28 4
gpt4 key购买 nike

Entity Framework 生成了一个名为Product 的实体类型。我写了这个查询

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

下面的代码会抛出以下错误:

"The entity or complex type Shop.Product cannot be constructed in aLINQ to Entities query"

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

但是当我使用 select p 而不是 select new Product { Name = p.Name}; 时,它工作正常。

如何执行自定义选择部分?

最佳答案

您不能(也不应该)投影到映射实体上。但是,您可以投影到匿名类型或 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();
}

关于c# - 无法在 LINQ to Entities 查询中构造实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325797/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com