我有一个用 C# 4.0 编写的简单 Windows 窗体应用程序。该应用程序显示了数据库中的一些记录。该应用程序具有由用户发起的查询选项。
我们可以将数据库中的记录称为作业考虑两列 JobID 和 Status
这些由两个后台服务更新,实际上就像生产者消费者服务一样工作。作业的状态将由后面运行的这些服务更新。
现在对于可以选择从数据库中查询记录的用户来说,例如根据状态(提交、处理、完成)查询数据。这可能会导致数以千计的记录,并且 GUI 在显示这些大量数据时可能会遇到一些性能故障。
因此,将查询结果的块显示为页面很重要。在用户手动刷新或进行新查询之前,不会刷新 GUI。
举例来说,由于服务不断更新作业,因此作业状态在任何时间点都可能不同。页面在从数据库中获取数据时应该具有数据的基本要求。
我正在使用 LINQ to SQL 从数据库中获取数据。它很容易使用,但不需要中级缓存来满足这种需求。如果记录的数量非常多,使用进程内存来缓存结果会导致页面内存暴涨到极致。不幸的是,LINQ 没有为 DataContext 对象提供任何中间层缓存设施。
用 C# 4.0 + SQL Server + Windows 环境实现分页机制的最佳方法是什么?
我觉得一些替代方案有一个重复的表/数据库,可以将结果临时存储为缓存。或者使用 Enterprise Application Library 的 Application Cache Block。相信这是大部分开发者面临的典型问题。这是解决此问题的最有效方法。(注意:我的应用程序和数据库在同一个盒子上运行)