我们正在使用自定义数据访问层从数据库中读取我们的域对象(客户,订单等)。此数据访问层不支持分页或排序。
我们希望使用WCF RIA Services将部分数据(例如客户)发布到Silverlight客户端。在客户端中,我们希望显示带分页的数据网格。
现在,在我们的RIA DomainService中,我们将拥有诸如
之类的功能IQueryable<Customer> GetCustomers()
{
List<Customer> customers = OurPersisteceLayer.GetAllCustomers();
return customers.AsQueryable()
}
此功能将读取数据库中的所有客户记录。我假设RIA在这种情况下无法进行任何形式的服务器端分页 - 我们将在调用函数时始终读取所有客户。
我的问题是:
RIA会将客户列表缓存在客户端中(并且只调用一次GetCustomers),还是每次用户移动到数据网格中的下一页时都会执行操作?
在我的场景中,操作可能需要5秒才能执行,如果一次完成则可以接受,但是如果每次用户想要移动到数据网格中的新页面时需要5秒钟,则不会这样做。
使用RIA访问旧数据访问层并且您想使用分页时,是否有一些好的解决方案/模式/方法?
答案 0 :(得分:0)
我假设您在客户端使用DomainDataSource进行分页。它基本上只调用IQueryable上的Skip
和Take
。所以我的预感是,因为每次拨打GetCustomers
时总是让所有客户接听,每次页面操作都会让您每次都得到所有客户。 DDS假定它调用Skip
并且Take
将被组合到LINQ查询中并最终在数据源本身上进行。