如何在ADO.Net中实现按需加载?

时间:2012-06-11 13:27:42

标签: .net ado.net lazy-loading

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

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

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

标准方法是什么?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

普通分页也会重新执行查询,所以我认为这不重要。

你唯一的选择是做一些分页(跳过/接受是一个很好的实现,虽然实际的分页可能有好处)

将它全部保存到数据表或其他内容中。你不会以这种方式获得分页的任何好处,但你确实让用户能够一次只加载一些记录,这可能是一个很好的可用性奖励。