【问题标题】:IQueryable<T> does not contain a definition for 'Include' and no extension method 'Include'IQueryable<T> 不包含“包含”的定义,也没有扩展方法“包含”
【发布时间】:2013-11-16 10:57:42
【问题描述】:

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

错误 1 ​​'System.Linq.IQueryable<.model.insurancecasetype>' 不包含“包含”的定义,也没有扩展方法 'Include' 接受类型的第一个参数 'System.Linq.IQueryable<.model.insurancecasetype>' 可以 被发现(您是否缺少 using 指令或程序集 参考?)

我的代码:

var allCaseTypes = Uow.InsuranceCaseType.GetAll().Include(a=>a.Geos);

方法 GetAll() 返回 - IQueryable&lt;.Model.InsuranceCaseType&gt;

我在范围内有以下命名空间:

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;

【问题讨论】:

  • 错误信息告诉你出了什么问题。您缺少 using 指令或程序集引用。 方法在什么命名空间和程序集中?

标签: c# linq


【解决方案1】:

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

using System.Data.Entity;

【讨论】:

  • 此信息不再准确。 Include 扩展方法现在位于 System.Data.Entity.Infrastructure 内,它位于 EntityFramework.dll 程序集中。引用该程序集以使用该方法。
  • 取决于我猜的 EntityFramework。我正在使用 EF 5.0 并且使用 System.Data.Entity 对我有用。
  • 对于 EFcore,这是:使用 Microsoft.EntityFrameworkCore;
【解决方案2】:

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

然后:

using Microsoft.EntityFrameworkCore;

【讨论】:

    【解决方案3】:

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

    对我来说问题是参考,即Entity Framework。使用 Nuget 安装 EF 后,.Include() 照常工作。

    这让我感到震惊,因为与 .Include() 相同的代码在我的主项目(MVC 应用程序)中运行,但在同一解决方案中的不同项目中没有运行,即使使用 using,因为它丢失了英孚。希望这可以节省其他人一些时间。

    【讨论】:

      【解决方案4】:

      (我正在使用 EF 7 和 ASP.NET 5 预览版,DNX 5.0 框架)

      添加这个已解决的矿井 -

      使用 Microsoft.Data.Entity;

      注意:不是System.Data.Entity

      【讨论】:

        【解决方案5】:

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

        using System.Data.Entity.QueryableExtensions
        

        MSDN Link

        【讨论】:

        • System.Data.Entity.QueryableExtensions 是一种类型,而不是命名空间,所以我认为这不会编译。您可以通过添加“使用 System.Data.Entity;”来访问这些扩展在你的类文件中。无论如何,这是我对 EF6 的体验,也许添加此回复时情况有所不同。
        • 需要导入什么nuget包
        【解决方案6】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-27
          • 1970-01-01
          • 2018-05-11
          • 2013-01-09
          • 2018-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多