Entity framework core AutoMapper ProjectTo在与EFCore的组合查询上引发NullReferenceException

Entity framework core AutoMapper ProjectTo在与EFCore的组合查询上引发NullReferenceException,entity-framework-core,automapper,Entity Framework Core,Automapper,我正在整合查询,以尽量减少SQL往返次数。 对于Skip-Take的结果,AutoMapper的ProjectTo方法似乎存在问题 作品: var totalUsers = await _dbContext.UserAccounts.CountAsync(cancellationToken); var users = await _dbContext.UserAccounts .Skip(skip).Take(take) .ProjectTo<UserProjection>

我正在整合查询,以尽量减少SQL往返次数。 对于Skip-Take的结果,AutoMapper的ProjectTo方法似乎存在问题

作品:

var totalUsers = await _dbContext.UserAccounts.CountAsync(cancellationToken);
var users = await _dbContext.UserAccounts
   .Skip(skip).Take(take)
   .ProjectTo<UserProjection>(_mapper.ConfigurationProvider)
   .ToListAsync(cancellationToken);
var totalUsers=await\u dbContext.UserAccounts.CountAsync(cancellationToken);
var users=await\u dbContext.UserAccounts
.Skip(跳过)。Take(接受)
.ProjectTo(_mapper.ConfigurationProvider)
.ToListSync(取消令牌);
引发NullReferenceException:

// query
var query = from _ in _dbContext.UserAccounts
    select new
    {
        TotalUserCount = _dbContext.UserAccounts.Count(),

        Users = _dbContext.UserAccounts
            .Skip(skip).Take(take)
            .ProjectTo<UserProjection>(_mapper.ConfigurationProvider)
            .ToList()
    };
var result = await query.FirstOrDefaultAsync(cancellationToken);
//查询
var query=from_uin_udbcontext.UserAccounts
选择新的
{
TotalUserCount=\u dbContext.UserAccounts.Count(),
Users=\u dbContext.UserAccounts
.Skip(跳过)。Take(接受)
.ProjectTo(_mapper.ConfigurationProvider)
托利斯先生()
};
var result=await query.FirstOrDefaultAsync(cancellationToken);
堆栈:

NullReferenceException:对象引用未设置为对象的实例。 Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression.AddCollectionProjection(ShapedQueryExpression ShapedQueryExpression,InActivation导航,键入elementType) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visite(表达式) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.VisitNew(NewExpression NewExpression) System.Linq.Expressions.NewExpression.Accept(ExpressionVisitor) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visite(表达式) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Translate(选择表达式选择表达式,表达式表达式) Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslationExpressionVisitor.TranslateSelect(ShapedQueryExpression源,LambdaExpression选择器) Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslationExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression) Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslationExpressionVisitor.VisitMethodCallExpression(MethodCallExpression MethodCallExpression) System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor) Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslationExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression) Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslationExpressionVisitor.VisitMethodCallExpression(MethodCallExpression MethodCallExpression) System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor) Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor(表达式查询) Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery(表达式查询,bool异步) Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore(IDatabase数据库、表达式查询、IModel模型、bool异步) Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler+c\u显示类12\u 0.b\u 0() Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOradQueryCore(对象缓存键,Func>编译器) Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery(对象缓存键,Func>编译器) Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync(表达式查询,取消令牌取消令牌) Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync(表达式表达式,CancellationToken CancellationToken) Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ExecuteAsync(MethodInfo operatorMethodInfo,IQueryable source,Expression Expression,CancellationToken CancellationToken) Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ExecuteAsync(MethodInfo operatorMethodInfo,IQueryable source,CancellationToken CancellationToken) Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.FirstOrDefaultAsync(IQueryable源,CancellationToken CancellationToken)

这一问题尤其是与跳转和跳转相结合时出现

你知道这是什么原因吗?或者这是AutoMapper的一个bug


代码示例取自当前AutoMapper版本为的ASP.NET Core 3.1应用程序。将其作为LINQ语句运行,不使用AM。你应该会得到同样的结果,同样的错误。有什么解决办法吗?