使用ToListAsync()或CountAsync()时出现内部服务器错误

时间:2017-08-18 10:05:18

标签: c# asp.net-core

我正在使用此代码返回Api中的对象列表:

 [HttpGet("/api/product")]
public async Task<QueryResultResource<PositionResource>> GetProducts(JobQueryResource queryObjResource)
{
    var jobs = await context.Job.ToListAsync();

    var projects = await context.Project.ToListAsync();

    var volunteerships = await context.Volunteership.ToListAsync();

    var internships = await context.Internship.ToListAsync();

    var products1 = mapper.Map<IEnumerable<Job>, IEnumerable<PositionResource>>(jobs);
    foreach (var p in products1)
        p.ProductType = "Job";

    var products2 = mapper.Map<IEnumerable<Project>, IEnumerable<PositionResource>>(projects);
    foreach (var p in products2)
        p.ProductType = "Project";

    var products3 = mapper.Map<IEnumerable<Volunteership>, IEnumerable<PositionResource>>(volunteerships);
    foreach (var p in products3)
        p.ProductType = "Volunteership";

    var products4 = mapper.Map<IEnumerable<Internship>, IEnumerable<PositionResource>>(internships);
    foreach (var p in products4)
        p.ProductType = "Internship";

    var products = products1.Concat(products2).Concat(products3).Concat(products4).AsQueryable();
    products = products.OrderByDescending(x => x.CreationDate);
    products = products.Where(x => x.IsActive == true).AsQueryable();


    var queryObj = mapper.Map<JobQueryResource, JobQuery>(queryObjResource);

    var result = new QueryResult<PositionResource>();


    var columnsMap = new Dictionary<string, Expression<Func<PositionResource, object>>>()
    {
        ["title"] = j => j.Title,
        ["city"] = j => j.City,
        ["Type"] = j => j.Type,
        ["Industry"] = j => j.Industry
    };


    products = products.ApplyOrdering(queryObj, columnsMap).AsQueryable();

    result.TotalItems = await products.CountAsync();

    products = products.ApplyPaging(queryObj);

    result.Items = await products.ToListAsync();

    return mapper.Map<QueryResult<PositionResource>, QueryResultResource<PositionResource>>(result);

}

我收到内部服务器错误。我删除了await关键字并使用了Count()和ToList()来实现

 result.TotalItems = await products.CountAsync();
...
result.Items = await products.ToListAsync();

它没有错误,我不明白为什么。

也许这是产生问题之前的步骤之一?

0 个答案:

没有答案