我访问数据上下文对象即使用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);

然而,当跳过的价值是什么,但0,我得到这个错误:

此提供程序支持跳过()仅在订购查询返回的实体或包含所有标识列,其中查询是单表(非加入)查询,或者是一个独特的预测,除了相交,或联盟(未的毗连)操作。

我认为德DateCompleted和LineItemId之间,该行是唯一的,但话又说回来,这弹出。是否有与此是为了做什么?如果是这样,我怎么能绕过这个问题?

有帮助吗?

解决方案

我相信它说的是,如果你没有在OrderDetails表标识列,那么你需要在那里或提到的其他运营商的一个补充.Distinct()。

其他提示

SQL Server 2000中有一些失踪“管道”的LINQ已经搞定,以便执行跳跃和Take功能周围。这大大限制了在其中可以使用这些函数与SQL Server 2000的条件。

请确保您包括_context.OrderDetails标识列,而你正在履行的所有其他条件作为错误信息说明。

当然,你可以随时升级到SQL Server 2005或更高版本。 :)

这里

更多信息: http://msdn.microsoft.com/en -us /库/ bb386988.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top