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 应用程序
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |