具有自定义数据层的RIA分页

时间:2010-08-18 21:14:28

标签: paging wcf-ria-services legacy-database

我们正在使用自定义数据访问层从数据库中读取我们的域对象(客户,订单等)。此数据访问层不支持分页或排序。

我们希望使用WCF RIA Services将部分数据(例如客户)发布到Silverlight客户端。在客户端中,我们希望显示带分页的数据网格。

现在,在我们的RIA DomainService中,我们将拥有诸如

之类的功能
IQueryable<Customer> GetCustomers()
{
   List<Customer> customers = OurPersisteceLayer.GetAllCustomers();
   return customers.AsQueryable()
}

此功能将读取数据库中的所有客户记录。我假设RIA在这种情况下无法进行任何形式的服务器端分页 - 我们将在调用函数时始终读取所有客户。

我的问题是:

RIA会将客户列表缓存在客户端中(并且只调用一次GetCustomers),还是每次用户移动到数据网格中的下一页时都会执行操作?

在我的场景中,操作可能需要5秒才能执行,如果一次完成则可以接受,但是如果每次用户想要移动到数据网格中的新页面时需要5秒钟,则不会这样做。

使用RIA访问旧数据访问层并且您想使用分页时,是否有一些好的解决方案/模式/方法?

1 个答案:

答案 0 :(得分:0)

我假设您在客户端使用DomainDataSource进行分页。它基本上只调用IQueryable上的SkipTake。所以我的预感是,因为每次拨打GetCustomers时总是让所有客户接听,每次页面操作都会让您每次都得到所有客户。 DDS假定它调用Skip并且Take将被组合到LINQ查询中并最终在数据源本身上进行。