admin

LINQ,Skip,OrderBy和SQL Server 2000

sql

我正在访问通过使用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时,会出现此错误:

此提供程序仅在返回包含所有标识列的实体或投影的有序查询上才支持Skip(),其中查询是单表(非联接)查询,或者是Distinct,Except,Intersect或Union(不是Concat)手术。

我认为在DateCompleted和LineItemId之间,行将是唯一的,但是随后又弹出了。这与视图有关吗?如果是这样,我该如何规避这个问题?


阅读 210

收藏
2021-06-07

共1个答案

admin

我相信它的意思是,如果您在OrderDetails表上没有标识列,则需要在其中添加.Distinct()或提到的其他运算符之一。

2021-06-07