Entity Framework Core 8:找不到 IQueryable“包含”方法

问题描述 投票:0回答:1

这个问题几乎与这个问题重复,只是答案已经有8年了,对我不起作用。还有这个这个,还有这个

我能找到的这个问题的每个答案都只是说添加

using Microsoft.EntityFrameworkCore;
(链接的第一个答案也指定了
using System.Linq;
。)我已经通过nuget安装了
Microsoft.EntityFrameworkCore
8.0.10以及
Microsoft.EntityFrameworkCore.SqlServer
8.0.10,并添加了两个 using 语句。

为了确保没有任何其他

using
冲突,我什至尝试删除除指定的 2 个之外的所有 using 语句,但仍然找不到 Include。我还尝试了其他一些随机的,例如
Microsoft.Data.Sql
Microsoft.EntityFrameworkCore.SqlServer

我还尝试通过 nuget 重新安装这两个包,清理/重建解决方案,并多次重新启动 Visual Studio。

显然我也在使用.NET Core 8。

“IQueryable”不包含“Include”的定义,并且找不到接受“IQueryable”类型的第一个参数的可访问扩展方法“Include”(您是否缺少 using 指令或程序集引用?)

代码:

using Microsoft.EntityFrameworkCore;
using System.Linq;

IQueryable queryable = GetQueryableByTableName("table1");
queryable.Include("table2");
c# .net-core entity-framework-core .net-8.0
1个回答
1
投票

在 EF Core 8 中,不存在 Include 方法 的非泛型重载。因此,您需要让您的

IQueryable
成为某种通用类型的
IQueryable<>
。如果您不知道类型,您可以利用
dynamic
类型来确定并在运行时调用该方法的正确通用版本:

IQueryable queryable = GetQueryableByTableName("table1");
queryable = EntityFrameworkQueryableExtensions.Include((dynamic)queryable, "table2");
© www.soinside.com 2019 - 2024. All rights reserved.