为源类型“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<>”找到了查询模式的多个实现。对“在哪里”的模棱两可的呼唤的主要内容,如果未能解决你的问题,请参考以下文章
Abp vnext EFCore 实现动态上下文DbSet踩坑记
New-ServiceFabricApplication:未找到应用程序类型和版本