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

问题描述 投票:0回答:1

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

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

现在,在我们的 RIA DomainService 中,我们将具有如下功能

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

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

我的问题是:

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

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

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

pagination wcf-ria-services legacy-database
1个回答
0
投票

我假设您在客户端使用 DomainDataSource 进行分页。它本质上只是在 IQueryable 上调用

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

© www.soinside.com 2019 - 2024. All rights reserved.