【发布时间】:2018-04-08 22:28:19
【问题描述】:
背景
我有一个包含大量记录的数据库表,有 50 万条记录。 我使用一次加载它们并将它们绑定到 GridView。显然,页面加载时间会因此受到不利影响。
我的解决方案
我认为我可以使用实体框架的延迟加载功能来仅加载我的数据的视图中/由 gridview 显示的部分。所以我实现了一个 EF 解决方案,但我现在得到一个 system.OutOfMemoryException。
阅读后发现 EF 加载了所有记录两次,这就是为什么我显然内存不足。
问题
EF 是延迟加载大量数据的正确解决方案吗?如果是这样,我该怎么做?
【问题讨论】:
-
Is EF the right solution for lazy loading large amounts of data?简短的回答是您不应该尝试在视图中显示 500,000 条记录。您应该改为实施某种过滤或分页。没有理智的人会阅读包含 500,000 条记录的网格。 -
考虑让您的 GridView 允许自定义分页。请参阅 GridView.AllowCustomPaging,以及互联网上的几个自定义分页示例
-
伙计们,我知道延迟加载和急切加载之间的区别。因此,我选择了 EF。但是 EF 仍然表现得像急切加载一样。
-
For example in my case, loading only one page's worth of database records at a time.唉,这不是延迟加载。
标签: c# asp.net entity-framework gridview webforms