You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET升级至6.0后EF Core通用查询方法执行失败

.NET 3.1升级到6.0(含EF Core同步升级)后Repository模式查询执行失败问题

将项目从.NET 3.1升级至6.0(同步升级EF Core)后,基于Repository和Unit of Work模式实现的查询代码出现执行失败问题。

报错的具体代码

public async Task<IEnumerable<T>> GetAsync(Expression<Func<T, bool>> filter = null,
        Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, params Expression<Func<T, object>>[] includes)
{
    IQueryable<T> query = dbSet;
    foreach (var include in includes) query = query.Include(include);

    if (filter != null) query = query.Where(filter);

    if (orderBy != null) query = orderBy(query);

    return await query.AsNoTracking().ToListAsync().ConfigureAwait(false);
}

尝试过的无效写法

  • 改写返回语句:
return await query.SingleOrDefaultAsync();
  • 更换为另一种返回写法:
return await query.FirstOrDefaultAsync();

触发的错误信息

System.TypeInitializationException: “Microsoft.EntityFrameworkCore.EnumerableMethods”的类型初始值设定项引发异常。
 ---> System.InvalidOperationException: 序列包含多个匹配元素
   在 System.Linq.ThrowHelper.ThrowMoreThanOneMatchException()
   在 System.Linq.Enumerable.TryGetSingle[TSource](IEnumerable`1 source, Func`2 predicate, Boolean& found)
   在 System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   在 Microsoft.EntityFrameworkCore.EnumerableMethods..cctor()
   --- 内部异常堆栈跟踪的结尾 ---
   在 Microsoft.EntityFrameworkCore.Query.Internal.AllAnyToContainsRewritingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   在 System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   在 Microsoft.EntityFrameworkCore.Query.QueryTranslationPreprocessor.Process(Expression query)
   在 Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
   在 Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0`1.<ExecuteAsync>b__0()
   在 Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func`1 compiler)
   在 Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
   在 Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
   在 Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken)
   在 System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
   在 Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
   在 MYProject.DatabaseLayer.Repository.BaseRepository`1.GetAsync(Expression`1 filter, Func`2 orderBy, Expression`1[] includes) 位置 MyProject.DatabaseLayer\Repository\BaseRepository.cs:行号 50

内容的提问来源于stack exchange,提问作者DL Narasimhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 06:54:32