.ToList() в MVC API Core 2
Возможно, об этом спрашивали раньше, но не получили хорошего ответа. Я создаю mvc API в mvc 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();
}
"Клиент" не содержит определения "ToList", и метод расширения "ToList", принимающий первый аргумент типа "Клиент", не найден (отсутствует директива using или ссылка на сборку?)
ОБНОВЛЕНИЕ ПОСЛЕ КОММЕНТАРИИ: Заказчик как класс для кода сначала в другом проекте в том же решении,
ОБНОВЛЕНИЕ ВТОРОЕ: первая мысль была моей ошибкой при использовании Customer без DbSet:), но при использовании он получал эту ошибку:
Тип 'IQueryable<>' определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку "System.Core, версия =0.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c561934e089".
Я открываю myproject.API.csproj, и это моя зависимость
<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" />
1 ответ
Если твой Customer
это подкласс DBSet<T>
тогда я верю в EF6
есть только метод асинхронного доступа к списку, см. здесь
Как правило, блокировка потока при синхронном вызове ввода-вывода не является хорошей практикой, поэтому лучше использовать async/await
Так что вы могли бы сделать
public Task<IEnumerable<Customer>> GetAll()
{
return await _db.Customer.ToListAsync();
}
Но это, конечно, изменит ваш метод подписи