为源类型“DbSet<>”找到了查询模式的多个实现。对“在哪里”的模棱两可的呼唤

Posted

技术标签:

【中文标题】为源类型“DbSet<>”找到了查询模式的多个实现。对“在哪里”的模棱两可的呼唤【英文标题】:Multiple implementations of the query pattern were found for source type 'DbSet<>'. Ambiguous call to 'Where' 【发布时间】:2020-06-24 14:49:16 【问题描述】:

我使用的是 EF Core 3.1.2,但出现以下错误

using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;


public async Task<List<Client>> GetClients()

      return await (from client in context.Client
                    select client).ToListAsync();

Multiple implementations of the query pattern were found for source type 'DbSet<>'. Ambiguous call to 'Where'
Multiple implementations of the query pattern were found for source type 'DbSet<>'. Ambiguous call to 'Select'
I get Ambiguous invocation:

System.Collections.Generic<IAsyncEnumerable>
System.Collections.Generic<IEnumerable>
System.Collections.Generic<IQuerable>

我没有任何方法可以覆盖上述内容。

【问题讨论】:

你的意思是过度使用? 请显示最少的代码(使用使用的库) 更新帖子 正如我所写...太多using 使用using System.Linq;using Microsoft.EntityFrameworkCore;,因为两个命名空间都定义了扩展 简单的谷歌搜索线索在这里github.com/dotnet/efcore/issues/18124 【参考方案1】:

根据这个github线程:https://github.com/dotnet/efcore/issues/18124

当前的解决方法是在您的 DBSet 上调用 AsQueryable()。例如:

_context.YourDbSet.AsQueryable()

【讨论】:

我认为这个问题已经解决。不确定在哪个版本的 .NET 中。认为它已在 .NET 5 中修复

以上是关于为源类型“DbSet<>”找到了查询模式的多个实现。对“在哪里”的模棱两可的呼唤的主要内容,如果未能解决你的问题,请参考以下文章

无法翻译 LINQ 表达式 DbSet<>.Any

Abp vnext EFCore 实现动态上下文DbSet踩坑记

mysql取模兼容算法

New-ServiceFabricApplication:未找到应用程序类型和版本

我的模特有什么问题?无法找到[EmailAddress]命名空间?

Azure 数据工厂数据流任务不能以 prem 为源