0

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

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

现在,在我们的 RIA DomainService 中,我们将有一个函数,例如

IQueryable<Customer> GetCustomers()
{
   List<Customer> customers = OurPersisteceLayer.GetAllCustomers();
   return customers.AsQueryable()
}

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

我的问题是:

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

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

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

4

1 回答 1

0

我假设您在客户端使用 DomainDataSource 进行分页。它本质上只是在 IQueryable 上调用Skip和。Take所以我的预感是,由于每次调用都会获得所有客户GetCustomers,因此每次页面操作都会导致您每次都获得所有客户。DDS 假设它对 LINQ 查询的调用Skip并将Take被组合到 LINQ 查询中,并最终在数据源本身上进行。

于 2010-08-18T21:18:39.667 回答