2017-09-17 3 views
0

peut-être cela demandé avant, mais ne pas obtenir une bonne réponse. Je crée une API mvc dans mvc Core 2 puis mettre en œuvre mon interface, dans Obtenir toutes les méthodes quand je veux obtenir la liste de tous les clients obtiennent cette erreur, en montrer ci-dessous mon code:.ToList() dans MVC api Core 2

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?)

MISE À JOUR APRÈS COMMENTAIRE: le client est en classe pour le code d'abord dans un autre projet dans la même solution,

MISE à JOUR DEUX: le premier pense était mon erreur pour le client d'utiliser sans DbSet :) mais quand l'utiliser se thi erreur s:

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" /> 

+3

comment est 'Customer' défini dans votre contexte db? –

+0

Pouvez-vous montrer la ligne dans votre 'DbContext' qui contient la propriété' Customer'? –

+1

J'aimerais quand même voir le code de votre code. Si '_db.Customer' est en effet' DbSet 'cela devrait fonctionner. – orhtej2

Répondre

2

Si votre Customer est une sous-classe de DBSet<T> alors je crois en EF6 il n'y a qu'un async à la liste méthode, voir here

En général, le blocage d'un fil dans un appel synchrone à IO n'est pas une bonne pratique, il est donc préférable d'utiliser async/await

vous pouvez donc faire

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

Mais cela, bien sûr changer votre signature de la méthode