2011-12-14 60 views
2

我的问题是关于如何处理使用WCF数据服务的寻呼。我想要使​​用它的方式是执行一个查询(传递页面大小和当前页面),并获取该查询的结果以及页面总数,当前页码和页面大小等分页信息。客户端(这是将结果转换为JSON的另一种服务,用于消耗它的移动应用程序)使用此分页信息来处理下一个/上一个按钮。使用WCF数据服务寻呼

但是,在WCF数据服务上使用LINQ太有限了,它不支持我需要的LINQ表达式。

我尝试在WCF 数据服务中创建服务操作,但是我只能返回IQueryable数据实体集合,所以我无法返回也包含分页信息的自定义实体。

有没有办法为WCF数据服务实现分页,这样我旁边的结果我也得到分页信息?

编辑:由于WCF数据服务的限制,我切换到正常的WCF服务。说实话,我不明白为什么有人会想要在这些严格的限制下使用数据服务!

+4

对不起,我错过了**数据**部分的问题。 WCF **数据**服务是可怕的限制。这是一个RESTful服务,因此您可以在URL中传递页面和页面大小信息。如果你使用它,以便你可以写LINQ查询 - 祝你好运。 WCF数据服务是OData的一个实现,它对如何格式化查询提出了限制。在你实际控制方法调用的地方编写WCF服务会更好。 – Yuck 2011-12-14 11:40:26

+2

我很害怕这会是答案: - /好吧,谢谢你... – 2011-12-14 11:43:00

回答

3

遗憾的是,似乎WCF数据服务是太有限,而对我来说,解决办法是切换到普通WCF服务,使我可以使用完整的LINQ并自己定义数据合同。

2

使用SkipTake执行从WCF数据服务数据,如客户端分页:

var items = (from i in ctx.MyEntities 
      select i).Skip(StartIndex).Take(PageSize) 

开始索引是你想要返回的数据的起始位置和每页是要返回的元素数量。