我有一个WCF数据服务具有名为的自定义操作MostRecentFilms
返回源中最新的 10 部电影。每部电影都有一个Year
财产。默认设置一切正常,但是当我设置实体集的页面大小时,config.SetEntitySetPageSize("*", 100)
,退片顺序不好。如果结果集少于 100 个也没关系,它们没有正确地从较近的到较少的排序,当不存在页面大小限制时如何返回它。
我不知道这是否是 WCF 数据服务错误,或者我是否缺少某些配置。任何澄清这一点的帮助将不胜感激。
这实际上是设计使然。服务器驱动的分页(SetEntitySetPageSize 支持它)的实现方式需要稳定的(且众所周知的)结果顺序。
因此,服务将根据给定实体上的所有关键属性对服务操作的结果进行排序(它也对实体集执行此操作)。
客户端可以在某种程度上影响排序 - 如果请求中有 $orderby,则生成的订单将是 $orderby 的应用程序,后跟所有关键属性。
目前,服务器上无法规定实体集或服务操作的顺序,以便服务器驱动的分页处理会像处理客户端的 $orderby 一样考虑它。
您可以让您的客户端添加正确的 $orderby ,或者如果这不可能,我能想到的唯一其他解决方法是在 URL 被 WCF 数据服务处理之前将 $orderby 注入到 URL 中(这可以通过自定义主机来完成) 、特殊标头、WCF...取决于您托管服务的具体方式等)。但这有点棘手,需要您半解析 URL 才能识别任何现有的 $orderby 。
请注意,此行为不仅适用于服务器驱动的分页,$top 和 $skip 也会对结果重新排序以保持稳定的排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)