1

我想在没有分页的情况下在网格视图中显示大量数据,但是通过提供“加载更多”选项来检索下一页并保留前一页。

如何使用 EF 或 ADO.Net 组件实现此功能?

我认为,.SkipeL2SQL.Take或 EF 中的方法无济于事,因为它们会在每次加载请求时重新执行查询。但是我想要实现的是类似于打开的 DataReader 的东西,它保存结果而不管数据库中发生了什么(添加/删除记录)。DataReader 的唯一问题是它不应该保持打开状态。

标准方法是什么?

4

2 回答 2

1

标准方法是使用 Skip/Take 并为每个加载的段重新执行查询。这个解决方案很简单,更重要的是,它是无状态的。您当然不希望保持打开的连接/命令/查询的时间超过当前 HTTP 请求执行所需的时间。这是一种反模式,因为您的应用程序变得有状态且脆弱。

如果查询非常昂贵,请考虑将前 5 页左右存储在为此目的而制作的新表中,以便您可以快速检索它们。

于 2012-06-11T13:55:32.353 回答
1

正常分页也会重新执行查询,所以我认为这无关紧要。

您唯一的两个选择是进行某种分页(跳过/采取是一种很好的实现,尽管实际分页可能有性能优势)

或者

将其全部保存到数据表或其他东西中。以这种方式分页不会带来任何性能优势,但您确实让用户能够一次仅加载一些记录,这可能是一个很好的可用性奖励。

于 2012-06-11T14:05:21.697 回答