AutoMapper ProjectTo 在使用 EFCore 的组合查询时抛出 NullReferenceException

Ben*_*Ben 5 automapper entity-framework-core

我正在整合查询以最大限度地减少 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);
Run Code Online (Sandbox Code Playgroud)

抛出 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);
Run Code Online (Sandbox Code Playgroud)

堆:

NullReferenceException:未将对象引用设置为对象的实例。Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression.AddCollectionProjection(ShapedQueryExpressionShapedQueryExpression, INavigation navigation, Type elementType) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression) Microsoft.EntityFrameworkCore.Query.Internal.RelationalExpressionExpressionNewsExpressionVisition(New) ) System.Linq.Expressions.NewExpression.Accept(ExpressionVisitorvisitor) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression,

该问题尤其在与 Skip and Take 结合使用时出现。

知道这可能是什么原因吗?或者这是 AutoMapper 的错误?

该代码示例取自具有当前 AutoMapper 版本的 ASP.NET Core 3.1 应用程序