我正在访问使用 LINQ to SQL 自动生成的数据上下文对象。 SQL 数据库是一个SQL Server 2000 盒子。我正在使用的类是 SQL 视图。我有一个类似的声明:
query = _context.OrderDetails
.Where(w => w.Product == "TEST")
.OrderBy(o => o.DateCompleted)
.ThenBy(t => t.LineItemId)
.Skip(startRowIndex)
.Take(maximumRows);
但是,当 Skip 的值不为 0 时,我会收到以下错误:
此提供程序仅在返回包含所有标识列的实体或投影的有序查询上支持 Skip(),其中查询是单表(非联接)查询,或者是 Distinct、Except、Intersect 或 Union(不是 Concat)手术。
我认为在“完成日期”和“行项目”之间,行将是唯一的,但此后又会弹出。这和这个观点有关系吗?如果是这样,我该如何规避这个问题?
SQL Server 2000 缺少一些 Linq 必须绕过的“管道”才能执行 Skip 和 Take 功能。这极大地限制了在 SQL Server 2000 中使用这些函数的条件。
确保您将 Identity 列包含在_context.OrderDetails
,并且您满足错误消息中所述的所有其他条件。
当然,您始终可以升级到 SQL Server 2005 或更高版本。 :)
更多信息请点击这里:http://msdn.microsoft.com/en-us/library/bb386988.aspx http://msdn.microsoft.com/en-us/library/bb386988.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)