Подтвердить что ты не робот

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;
4b9b3361

Ответ 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;
}