我获得了一个现有应用程序的作业,其中客户端使用远程处理与服务器通信。客户端执行一些统计信息,然后他们向服务器请求大型DataSet对象。这些DataSet可以容纳超过100.000条记录,因此当服务器从数据库中读取信息以发送回DataSet时,服务器会获得很大的内存压力。
现在我的问题是:是否可以" stream" DataSet返回到客户端,以便服务器永远不会持有超过 - 例如 - 2.000条记录吗?我知道我可以做一些分页,但据我所知,DataSet中的Fill方法总是读取整个内容。即使你使用Fill(DataSet dataSet,int startRecord,int maxRecords,string srcTable),它似乎只是读取所有内容然后返回指定的maxRecords。
下一个问题是我们会调用Fill方法TotalSize / maxRecords次数,因此我们会使用相同的查询(以及不同的页面)多次查询数据库服务器。
我正在考虑像DataReader这样的东西,我只是查询数据库一次,然后迭代所有记录"流媒体"回到"页面"。我只是不知道如何传回信息,然后继续阅读信息。
有可能吗?