如何在使用 BindingSource 对象时在 SQLite 数据库 table 和 datagridview 之间获取现金?

How to get cashing between a SQLite database table and a datagridview while using a BindingSource object?

我在 SQLite 数据库 table 中有数据,我想在数据网格视图中显示这些数据。 我能够使用 BindingSource 并将数据加载到 DataTable 中并填写我的 datagridview(和绑定导航器)在 tables 上没有任何问题 足够小(即适合可用内存)。

但我也有一个数据库的副本,其中的先决条件(它适合 记忆)不再是真的。我仍然想使用我的 datagrieview 绑定源等

DataGridView 确实有一个只加载记录的虚拟模式 显示的 dan Microsoft 提供了一个很好的兑现示例 https://msdn.microsoft.com/en-us/library/ms171624(v=vs.100).aspx 中的记录 得到了工作,但它断开了 datagridview 与 bindingsource 和我不能再使用绑定导航器或其他 可以连接到绑定源的细节。

DataTable,据我了解,是数据的无连接副本。 因为它是无连接的,所以它需要所有数据。这就是我的问题所在。所有数据都不适合内存。我看了一下使用 来自 Microsoft 的兑现和即时数据加载的想法 示例,但没有看到为 DataTables 实现此功能的简单方法。

问题: 是否存在用于创建缓存或缓冲 DataTable 的对象(或方法) 可以与 BindingSource 一起使用?

有没有人suggestions/directions如何以干净简单的方式解决这个问题?

此致。

这是我所做的:

我创建了一个实现 IList 接口的缓存 class。 缓存是使用微软示例读取数据库的思想实现的。 并且缓存可以作为列表访问,这是 BindingSource DataSource 属性所需要的。

根据微软文档

The DataSource property can be set to a number of data sources, including types, objects, and lists of types. The resulting data source will be exposed as a list.

这是否意味着原始列表中的每条记录都有一个私人副本?那需要测试。如果是这样,我的想法就失败了。

我希望绑定源使用某种智能查找算法并且不会复制所有内容。我觉得copy的场景不太可能,比如insert和delete的管理很麻烦

第一次测试看起来很有希望。

但是如果有人对此有更好的想法...

亲切的问候。