处理大型数据库结果集和维护UI响应的最佳方法

时间:2016-05-19 03:13:40

标签: c# wpf entity-framework linq architecture

我正在编写一个WPF和Entity Framework应用程序来编目PC上的所有照片。当我找到一个图像时,我将它保存到临时列表中,然后每隔几秒就将新项目列表写入数据库,这样我就不会经常连接到数据库了。如果应用程序崩溃,我可以检测到并继续使用数据库中的记录。

我在列表框中显示所有项目。为了填充它,我使用' .ToList'进行数据库LINQ查询。每隔几秒钟,我就可以更新显示屏,也可以对项目进行过滤或排序。但很明显,随着列表变大,查询需要更长时间,并且界面更新时界面会暂停。

为了提高响应能力,我考虑尝试使用ObservableCollection,以便列表框项目实时更新,而且我不必进行昂贵的数据库查询。但我已经读过,使用Entity Framework我不应该保持长时间运行的上下文,而是根据需要创建和销毁它。使用可观察的实体集合似乎暗示ObservableCollection是所有结果的内存中集合。如果有1,000,000个图像文件,那么我不想在内存中有大量的集合,所以我倾向于根据需要从数据库中获取结果。但是,如何根据实时结果响应更新UI?

0 个答案:

没有答案