Exception 方法';跳过';仅支持LINQ to实体中的排序输入。方法';订购人';必须在方法';跳过';

Exception 方法';跳过';仅支持LINQ to实体中的排序输入。方法';订购人';必须在方法';跳过';,exception,entity-framework-4,linq-to-entities,dynamic-data,Exception,Entity Framework 4,Linq To Entities,Dynamic Data,我正在处理动态数据 创建动态模型并在global.asax中注册后,如 DefaultModel.RegisterContext(typeof(masterEntities1),new ContextConfiguration() { ScaffoldAllTables = true }); 当我运行应用程序时,它会显示一个表列表,但当我单击任何一个表时,它会引发异常: 方法“跳过”仅支持LINQ to实体中的排序输入。方法“OrderBy”必须在方法“Skip”之前调用。 但是我还没有在我

我正在处理动态数据

创建动态模型并在global.asax中注册后,如

DefaultModel.RegisterContext(typeof(masterEntities1),new ContextConfiguration() { ScaffoldAllTables = true }); 
当我运行应用程序时,它会显示一个表列表,但当我单击任何一个表时,它会引发异常:

方法“跳过”仅支持LINQ to实体中的排序输入。方法“OrderBy”必须在方法“Skip”之前调用。


但是我还没有在我的应用程序中声明任何查询。

如果使用
.Skip
方法,您必须在查询中调用
.OrderBy'
。例如,如果您正在使用类似于以下内容的内容:

results=results.Skip(页码*大小)。Take(大小)

在上面的例子中,如果您计划使用分页方法或类似的方法,那么您以前必须使用
.OrderBy
对查询进行排序。如果您有一个
Id
字段,将其添加到原始查询表达式中应该可以消除错误:


.OrderBy(x=>x.Id)

我遇到过一些包含以下信息的网站。如果您使用实体框架作为数据模型,则必须更新每个实体的查询方法。您需要添加ordering子句。需要执行此操作的原因是,默认情况下,查询方法没有排序,并且在动态数据项目模板中,为列表和列表详细信息模板启用了分页。在这种情况下,如果不对查询方法的结果排序并使用分页,则在访问列表/列表详细信息模板中的实体时,将出现以下异常,例如:public IQueryable GetProducts(){返回this.ObjectContext.Products.OrderBy(p=>p.ProductID);}但现在的问题是,在实体数据模型中,我应该在何处按实体排序,这样当它映射到关系表时,它在调用方法skip之前会按列表排序?因为按ID排序(如果数据来自数据库)是隐含的,所以skip方法不能也做出这样的假设吗?