MVC api 核心 2 中的 .ToList()

.ToList() in MVC api Core 2

也许之前有人问过这个问题,但没有得到很好的答案。 我在 mvc Core 2 中创建了一个 mvc API 然后实现了我的接口,当我想要获取所有客户的列表时在获取所有方法中得到这个错误,在下面显示我的代码:

using System;
using System.Collections.Generic;
using Dates.Api.Contacts;
using Dates.Model;
using System.Linq;
using Microsoft.EntityFrameworkCore.Design;

public IEnumerable<Customer> GetAll()
    {
      return  _db.Customer.ToList();
    }

'Customer' does not contain a definition for 'ToList' and no extension method 'ToList' accepting a first argument of type 'Customer' could be found (are you missing a using directive or an assembly reference?)

评论后更新:客户在同一解决方案的另一个项目中class代码优先,

更新两个:第一个想法是我在没有 DbSet 的情况下使用 Customer 的错误 :) 但是当使用它时出现此错误:

The type 'IQueryable<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Core, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
I open myproject.API.csproj and these are my dependency

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
<PackageReference Include="System.Core" Version="3.5.21022.801" />

如果您的 CustomerDBSet<T> 的子类,那么我相信 EF6 只有一个异步列表方法,参见 here

一般来说,同步调用IO阻塞一个线程不是一个好习惯,所以最好使用async/await

所以你可以

public Task<IEnumerable<Customer>> GetAll()
{
    return await _db.Customer.ToListAsync();
}

但这当然会改变你的方法签名