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" />
如果您的 Customer
是 DBSet<T>
的子类,那么我相信 EF6
只有一个异步列表方法,参见 here
一般来说,同步调用IO阻塞一个线程不是一个好习惯,所以最好使用async/await
所以你可以
public Task<IEnumerable<Customer>> GetAll()
{
return await _db.Customer.ToListAsync();
}
但这当然会改变你的方法签名
也许之前有人问过这个问题,但没有得到很好的答案。 我在 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" />
如果您的 Customer
是 DBSet<T>
的子类,那么我相信 EF6
只有一个异步列表方法,参见 here
一般来说,同步调用IO阻塞一个线程不是一个好习惯,所以最好使用async/await
所以你可以
public Task<IEnumerable<Customer>> GetAll()
{
return await _db.Customer.ToListAsync();
}
但这当然会改变你的方法签名