IQueryable <t>不包含“Include”的定义,也不包含“Include”</t>的扩展方法

时间:2013-11-16 10:57:42

标签: c# linq

我正在尝试在IQueryable集上使用Include扩展,但我有以下问题:

  

错误1'System.Linq.IQueryable&lt; .Model.InsuranceCaseType&gt;'   不包含“Include”的定义,也没有扩展方法   '包括'接受第一个类型的参数   'System.Linq.IQueryable&LT; .Model.InsuranceCaseType&GT;'可以   找到(你错过了使用指令或程序集   引用?)

我的代码:

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;

6 个答案:

答案 0 :(得分:105)

Include不是Queryable上的扩展方法,因此它不会与所有常用的LINQ方法结合在一起。如果您使用的是Entity Framework,则需要导入相应的命名空间:

using System.Data.Entity;

答案 1 :(得分:12)

如果您使用.Net核心版本,则需要安装: Microsoft.EntityFrameworkCore nuget包。

然后:

using Microsoft.EntityFrameworkCore;

答案 2 :(得分:5)

即使在包含using指令之后,对于遇到此问题的其他人也会有一些帮助。 Jon提到了它,但我只是想说清楚,即使在阅读了答案之后我也会被困住一段时间,抱歉,如果它看起来很明显但可能会节省一些时间。

我的问题是参考,它是实体框架。使用Nuget安装EF后,.Include()照常工作。

这让我失望,因为include()的相同代码在我的主项目(mvc应用程序)中工作,但是在同一解决方案中不使用其他项目,即使使用“使用”,因为它缺少EF。希望这能节省一些时间。

答案 3 :(得分:5)

(我正在使用EF 7与ASP.NET 5 Preview,DNX 5.0 Framework)

添加此解决方案 -

使用Microsoft.Data.Entity;

注意:它不是系统 .Data.Entity

答案 4 :(得分:2)

如果您正在寻找Jon正在讨论的方法,您需要导入以下命名空间:

using System.Data.Entity.QueryableExtensions

MSDN Link

答案 5 :(得分:-1)

如果直接部署到存储库,则可以使用Include(),如下面的示例代码所示:

public IQueryable<Colaborador> FindAll()
{
     var retRepository = from colaborador in All()
                            .Include(x => x.Cliente)
                            select colaborador;

     return retRepository;
}