IQueryable <T> не содержит определения для "Include" и никакого метода расширения "Include"
Я пытаюсь использовать расширение Include для набора IQueryable, но у меня есть следующая проблема:
Ошибка 1 'System.Linq.IQueryable <.Model.InsuranceCaseType > ' не содержит определения для "Include" и никакого метода расширения "Включить", принимающий первый аргумент типа 'System.Linq.IQueryable <.Model.InsuranceCaseType > ' может (вам не хватает директивы использования или сборки ссылка?)
Мой код:
var allCaseTypes = Uow.InsuranceCaseType.GetAll().Include(a=>a.Geos);
Метод GetAll()
возвращает - IQueryable<.Model.InsuranceCaseType>
Я имею в виду следующие пространства имен:
using System.Collections;
using System.Collections.Generic;
using System;
using System.Data;
using System.Linq;
using System.Data.Entity;
using System.IO;
using System.Web;
using System.Web.Mvc;
Ответы
Ответ 1
Include
не является методом расширения на Queryable
, поэтому он не сочетается со всеми обычными методами LINQ. Если вы используете Entity Framework, вам необходимо импортировать соответствующее пространство имен:
using System.Data.Entity;
Ответ 2
Если вы используете базовую версию .Net, вам необходимо установить: пакет nuget Microsoft.EntityFrameworkCore.
А потом:
using Microsoft.EntityFrameworkCore;
Ответ 3
Некоторая дополнительная помощь для других, испытывающих эту проблему, даже после включения директивы using. Джон упомянул об этом, но я просто хочу прояснить это, поскольку даже после прочтения ответа я застрял на некоторое время, извините, если это кажется очевидным, но может спасти кого-то еще некоторое время.
Вопрос для меня был ссылкой, которая была Entity Framework. После использования Nuget для установки EF .Include()
работал как обычно.
Это бросило меня, потому что тот же код с .Include()
работал в моем основном проекте (приложение MVC), но не работал в другом проекте в том же решении, даже с using
, так как в нем отсутствовал EF. Надеюсь, это сэкономит кому-то еще время.
Ответ 4
(Я использую EF 7 с ASP.NET 5 Preview, DNX 5.0 Framework)
Добавление этой разрешенной шахты -
с использованием Microsoft.Data.Entity;
Примечание. Это не Система.Data.Entity
Ответ 5
Если вы ищете метод, о котором говорит Джон, вам нужно импортировать следующее пространство имен:
using System.Data.Entity.QueryableExtensions
Ссылка MSDN
Ответ 6
Если вы развертываете непосредственно в своем хранилище, вы можете использовать Include()
, как показано в примере кода ниже:
public IQueryable<Colaborador> FindAll()
{
var retRepository = from colaborador in All()
.Include(x => x.Cliente)
select colaborador;
return retRepository;
}