我正在 WPF 中开发一个桌面应用程序,该应用程序正在处理存储在数据库中的大量数据。该应用程序使用图表和网格呈现该数据。
我选择使用实体框架访问数据(代码优先)。它易于使用,延迟加载是我一直在寻找的东西。搜索 NET,我发现 Entity Framework 似乎被设计用于“工作单元”策略。
让我们从我的客户那里得到两个简单的期望:
- 我想打印我的数据并了解打印进度。
- 我想生成 PDF 报告并了解生成进度。
客户看到网格,所以他期待一些对 Excel 关闭的东西。
- 打印和报告生成应考虑对数据所做的所有修改。
- 修改在用户保存之前无效。
例如,打开 excel、修改工作表、打印并关闭应用程序放弃更改。
- 打印了所有工作表,包括未保存的数据
- 如果我重新打开文件,未保存的数据将不复存在。
假设我在 UI 线程中打开一个 DBContext 来操作数据并累积更改,并且我想在另一个线程中进行导出,因为它很耗时(一个新的 DBContext),我对数据的更改没有被考虑在内,除了如果我保存数据。
所以我该怎么做 ...
- 将数据库中的数据加载到磁盘上的 XML 文件中,然后处理这些文件并在保存时将数据放回数据库中?
- 发挥想象力,把DBContext放到自己的线程中,让loading和lazy loading重定向到DBContext线程?
- 始终将数据保存在数据库中,但是当出现“未保存”标志或类似情况时?
欢迎任何建议。