【发布时间】:2017-09-16 19:33:54
【问题描述】:
有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(object value, string paramName, int index) System.Dynamic.Utils.ExpressionUtils.RequiresCanRead(表达式表达式,字符串参数名称,int idx) System.Dynamic.Utils.ExpressionUtils.ValidateOneArgument(MethodBase 方法,ExpressionType nodeKind,表达式参数,ParameterInfo pi,字符串 methodParamName,字符串 argumentParamName,int 索引) System.Dynamic.Utils.ExpressionUtils.ValidateArgumentTypes(MethodBase 方法,ExpressionType nodeKind,参考 ReadOnlyCollection 参数,字符串 methodParamName) System.Linq.Expressions.Expression.Call(表达式实例,MethodInfo 方法,IEnumerable 参数) Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal.IncludeExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor 访问者)
在初始查询中添加 Where 或 Skip 可修复错误。
不知道是什么原因。
使用 Npgsql.EntityFrameworkCore.PostgreSQL 和 .NET Core 1.1
【问题讨论】:
-
任何时候看到此类异常,请确保这是当前的 EF Core 错误。
-
.Skip(0)? - 跳过零元素有意义吗? community.embarcadero.com/blogs/entry/… -
@FredrikRedin 此代码取自分页的实际实现,其中
Skip函数的参数不是固定数字,而是根据当前页码计算的。
标签: c# entity-framework linq .net-core