如何使用实体框架将大量数据延迟加载到 GridView [关闭]

Posted

技术标签:

【中文标题】如何使用实体框架将大量数据延迟加载到 GridView [关闭]【英文标题】:How can I Lazy Load Large Amounts of Data on to a GridView with Entity Framework [closed] 【发布时间】: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 条记录的网格。 Lazy Loading vs Eager Loading的可能重复 考虑让您的 GridView 允许自定义分页。请参阅 GridView.AllowCustomPaging,以及互联网上的几个自定义分页示例 伙计们,我知道延迟加载和急切加载之间的区别。因此,我选择了 EF。但是 EF 仍然表现得像急切加载一样。 For example in my case, loading only one page's worth of database records at a time. 唉,这不是延迟加载。 【参考方案1】:

我认为你想要的是分页而不是延迟加载。

看看这个https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

【讨论】:

我没有使用 MVC。然而,我以前看过这个页面,它并不真正适用于 Webforms。

以上是关于如何使用实体框架将大量数据延迟加载到 GridView [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C# - 实体框架代码优先,延迟加载不起作用

使用 DTO 在实体框架中延迟加载

实体框架急切加载不返回数据,延迟加载有

使用实体框架更新数据库记录(延迟加载和虚拟属性)

延迟加载 - (实体框架)底层连接意外关闭

使用实体框架删除大量项目[重复]