ToListAsync抛出'Value不能为null。'例外

时间:2017-04-20 09:02:32

标签: c# entity-framework linq .net-core

拥有IQueryable

var query = _db
    .ApplicationPaidServices
    .Include(it => it.Application)
    .Include(it => it.Application.User)
    .Where(it => Enum1.Value1 == it.Application.Enum1)
    .Skip(0);                

执行 1

 var result1 = await (from it in query
                      select it)
            .ToListAsync();

作品。

执行 2

 var result2 = await (from it in query
                      select
                      new
                      { it })
                     .ToListAsync();

使用消息抛出ArgumentNullException值不能为空。参数名称:arguments [2]

堆栈跟踪

  

System.Dynamic.Utils.ContractUtils.RequiresNotNull(对象值,字符串paramName,int index)   System.Dynamic.Utils.ExpressionUtils.RequiresCanRead(表达式表达式,字符串paramName,int idx)   System.Dynamic.Utils.ExpressionUtils.ValidateOneArgument(MethodBase方法,ExpressionType nodeKind,表达式参数,ParameterInfo pi,字符串methodParamName,字符串argumentParamName,int index)   System.Dynamic.Utils.ExpressionUtils.ValidateArgumentTypes(MethodBase方法,ExpressionType nodeKind,ref ReadOnlyCollection参数,字符串methodParamName)   System.Linq.Expressions.Expression.Call(表达式实例,MethodInfo方法,IEnumerable参数)   Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal.IncludeExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)   System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)

在初始查询中评论WhereSkip可修复错误。

不知道是什么原因。

使用 Npgsql.EntityFrameworkCore.PostgreSQL.NET Core 1.1

1 个答案:

答案 0 :(得分:0)

今天被这个咬了。一种可能的解决方法是在ToListAsync之前等待Select()

        var paged = await queryable
            .OrderBy(m => m.Name)
            .Skip(0).Take(30)
            .ToListAsync();

        var result = paged.Select(ViewModel.Map).ToList();