我应该怎么做才能在WebAPI中返回一对多列表?

时间:2019-07-03 18:18:27

标签: c# entity-framework linq asp.net-core

我尝试返回一个对象类,但是尝试失败。

public class tbl_Product
{     
    public tbl_Product()
    {
        tbl_ProductDescription = new HashSet<tbl_ProductDescription>();
        tbl_ProductPricing = new HashSet<tbl_ProductPricing>();
    }

    public Guid Id { get; set; }      
    public string ProductCode { get; set; }
    public string ProductName { get; set; }
    public Decimal Price { get; set; }

    [InverseProperty("Product")]
    public virtual ICollection<tbl_ProductPricing> tbl_ProductPricing { get; set; }
 }

下面是我在返回期间的WebAPI函数:

[HttpGet]
public Task<ActionResult<ICollection<tbl_Product>>> GetProductList()
{
    var result = _context.tbl_Product
        .Include(a => a.tbl_ProductPricing).ToList();

    return result;
}

但是,我遇到了这个错误:

Cannot implicitly convert type 'System.Collections.Generic.List<Model.tbl_Product>' to 'System.Threading.Tasks.Task<Microsoft.AspNetCore.Mvc.ActionResult<System.Collections.Generic.ICollection<Model.tbl_Product>>>'

我可以知道应该输入什么返回类型吗?

1 个答案:

答案 0 :(得分:1)

[HttpGet]
public async Task<ActionResult<ICollection<tbl_Product>>> GetProductList()
{
    return Ok(await _context.tbl_Product.Include(a => a.tbl_ProductPricing).ToListAsync());
}

返回的实例必须与方法签名中指定的类型匹配。在您的情况下,您指定返回类型为Task<ActionResult<ICollection<tbl_Product>>>,因此它必须1)返回一个Task和2)该任务必须解析ActionResult<ICollection<tbl_Product>>的实例,以及3)ActionResult必须具有以下内容:实现ICollection<tbl_Product>


我假设您使用的是.net core,并且是指ActionResult<T>