ADO Large DataSet 抛出内存不足异常

ADO Large DataSet throws out of memory exception

我有一个巨大的 dataset(大约 150 万条记录)抛出一个 "out of memory exception",dataset 似乎从数据库加载相当快(2-3 秒)但是当调用 Merge() 方法时,应用程序崩溃并抛出 "Out Of Memory" 异常。

DataSet dsTemp = setupBpc.GetAllData(); << THIS WORKS
if (dsTemp != null)
{
   dsSetupData.Merge(dsTemp); << OOM Exception
}

该应用程序是旧的,我有点坚持使用 ADO,因为重构将是一项艰巨的任务。这是一个使用 Janus GridEXwinforms 应用程序,我一直无法找到任何方法来使用 GridEX 组件进行分页。

但让我难过的是,这似乎不是 dataset 本身的问题,它正在从数据库中检索并毫无问题地加载。 Merge() 方法似乎有问题导致失败。

您可能 运行 内存不足,因为您正在合并数据并且需要更多内存。想一想:首先你持有原始数据集,然后合并,这基本上是将原始数据集复制到新数据集中。因此占用两倍的内存。

我确定 Janus GridEX 支持数据检索的分页参数,您应该在整个数据层实现这一点。我认为此代码更改是不可避免的,因为它无法扩展,而且您很幸运,之前没有遇到此问题!