具有业务逻辑过滤的服务器端分页



我需要在网格标题显示行的总数。网格还必须处理大量的记录。所以我决定使用网格自定义分页功能。我知道如何做服务器端分页与sql2005 ROW_NUMBER等。但我的困难在于在业务逻辑层进行复杂的行基过滤。我认为首先对大量记录进行复杂的过滤(为了知道项目计数)将是不高效的,可能会导致内存不足的异常。

现在这个项目(asp.net web应用程序)正在使用。net framework1.1,sql2005进行生产。下一个产品版本将是。net framework4.0。之后我们将升级到sql2008。

请帮我找到一个解决这个问题的方法。谢谢。

我想说,如果你害怕在生产中出现内存不足的异常,要么是硬件对你拥有的数据量不足,要么是你的代码真的严重错误:)

我希望所有的事情都是一个存储过程,包括过滤、分页和排序。一旦你在服务器上排序好了,并且指定了需要检索的页面大小和页面索引,存储过程就会简单地返回你正在寻找的已经排序的记录的单页,你可以将其绑定到你的UI控件。

这是你想要的还是我误会你了?

如果你正在使用。net 4.0, IQueryable是一个可行的选择。详情请看这里。基本上,IQueryable延迟查询的执行,这样您就可以应用业务逻辑,然后从底层数据存储(在您的示例中是sql server)获取相关的数据。但是,在采用这种方法之前,我会对查询性能进行一些微基准测试。