我正在将应用程序从.Net Framework 4.6.1迁移到.Net Core 2.2,并且某些linq到SQL查询没有按预期的方式迁移。
当我将跳过和获取方法应用于IQueriable时,它们不适用于SQL
return query
.AsNoTracking()
.Skip(skip)
.Take(take)
.ToList();
SQL查询转换为
SELECT {query} ...
OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
代替注入实际值,它留下未填充的参数引用,并返回整个结果集。
我曾尝试用OrderBy()更新IQueriable,并在请求IEnumerable之前添加Skip()和Take(),如其他帖子中所建议的那样,
有任何线索吗?
================编辑=================
不良的表现似乎不是跳过/采用用法,而是子句的连接方式。
而不是做一个
WHERE {clause 1} AND {clause 2}
与EF6一样,会产生一系列WHERE ((CASE WHEN {clause} THEN CAST (1 AS BIT) ELSE CAST (0 AS BIT) END | CASE WHEN {clause 2}
,并且效果不佳。