Entity framework core AutoMapper ProjectTo在与EFCore的组合查询上引发NullReferenceException
我正在整合查询,以尽量减少SQL往返次数。 对于Skip-Take的结果,AutoMapper的ProjectTo方法似乎存在问题 作品: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>
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。你应该会得到同样的结果,同样的错误。有什么解决办法吗?